Ribbon
隨著服務注冊中心的安裝完成后,客戶端的負載均衡和服務的調用又是我們關注的話題。Ribbon可以實現客戶端的負載均衡,
負載均衡LB
Load Balance(負載均衡):簡單的說就是將用戶的請求平攤的分配到多個服務器上,從而達到系統的HA(高可用)。常見的負載均衡工具有nginx、LVS,硬件上F5等
集中式LB
即在服務的消費方和提供方之間使用獨立的LB設施,可以是硬件F5、也可以是軟件nginx、LVS等,提供該設施將請求通過某種策略發送給服務提供方
進程內LB
將LB邏輯集成到消費方,消費方從服務注冊中心查找服務列表,然后獲取服務地址根據某種規則選出合適的服務器。Ribbon就是進程內LB,它只是一個類庫,集成于消費方進程,消費者通過它來獲取到服務提供方的地址
SpringCloud Ribbon是基于Netflix Ribbon實現的一套客戶端的負載均衡工具,主要功能是提供了客戶端的軟件負載均衡算法和服務調用。Ribbon客戶端組件提供了一系列完善的配置項例如連接超時、重試等。Ribbon目前也進入了維護模式
Ribbon 是 Netflix開源的基于HTTP和TCP等協議負載均衡組件
Ribbon 可以用來做客戶端負載均衡,調用注冊中心的服務
Ribbon的使用需要代碼里手動調用目標服務,請參考官方示例:https://github.com/Netflix/ribbon
Nginx是服務器端的負載均衡,客戶端的所有請求都會交給nginx,由nginx分發到各個服務器上。即負載均衡是由服務端實現的
Ribbon是本地的負載均衡,在調用微服務接口的時候,會在注冊中心上獲取注冊服務信息列表之后緩存到JVM本地,從而在本地實現RPC遠程服務調用的技術
?
?
Feign
Feign是Spring Cloud組件中的一個輕量級RESTful
的HTTP服務客戶端
Feign內置了Ribbon,用來做客戶端負載均衡,去調用服務注冊中心的服務。
Feign的使用方式是:使用Feign的注解定義接口,調用這個接口,就可以調用服務注冊中心的服務
Feign支持的注解和用法請參考官方文檔:https://github.com/OpenFeign/feign
Feign本身不支持Spring MVC的注解,它有一套自己的注解
Feign是Spring Cloud組件中的一個輕量級Restful的HTTP服務客戶端,Feign內置了Ribbon,用來做客戶端的負載均衡,去調用服務注冊中心的服務。Feign的使用方式是:使用Feign的注解接口,調用這個接口,就可以調用服務注冊中心的服務
?
?
OpenFeign
而OpenFeign則是可以讓我們像調用Dubbo接口一樣,實現面向接口編程
OpenFeign是Spring Cloud 在Feign的基礎上支持了Spring MVC的注解,如@RequesMapping
等等。
OpenFeign的@FeignClient
可以解析SpringMVC的@RequestMapping
注解下的接口,
并通過動態代理的方式產生實現類,實現類中做負載均衡并調用其他服務。
OpenFeign是Spring Cloud在Feign的基礎上支持了SpringMVC的注解,如@RequestMapping等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通過動態代理產生實現類,實現類中做負載均衡并調用其他服務
?