本文由 發(fā)布,轉載請注明出處,如有問題請聯(lián)系我們! 發(fā)布時間: 2021-08-26SpringCloud升級之路2020.0.x版-21.Spring Cloud LoadBalancer簡介
加載中本系列產(chǎn)品編碼詳細地址:https://GitHub.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford
大家應用 Spring Cloud 官方網(wǎng)介紹的 Spring Cloud LoadBalancer 做為人們的手機客戶端負載均衡設備。
Spring Cloud LoadBalancer情況
Spring Cloud LoadBalancer是一個手機客戶端負載均衡設備,類似Ribbon,可是因為Ribbon早已進到維護保養(yǎng)方式,而且Ribbon 2并不與Ribbon 1互相兼容,因此 Spring Cloud套餐在Spring Cloud Commons新項目中,加上了Spring cloud Loadbalancer做為新的負載均衡設備,而且干了往前兼容,即使你的工程中再次用 Spring Cloud Netflix 套服(包含Ribbon,Eureka,Zuul,Hystrix這些)使你的工程中有這種依靠,你還可以利用簡潔的配備,把ribbon換成Spring Cloud LoadBalancer。
負載均衡設備在哪兒應用?
Spring Cloud 中內(nèi)部微服務架構啟用默認設置 是 http 要求,關鍵根據(jù)下邊三種 API:
RestTemplate:同歩 http API
WebClient:多線程響應式網(wǎng)站 http API
三方手機客戶端封裝,比如 openfeign
假如新項目中添加了 spring-cloud-loadbalancer 的依靠而且配備開啟了,那麼會自行在相應的 Bean 中添加負載均衡設備的特點。
針對 RestTemplate,會自行對全部
@LoadBalanced
注釋裝飾的 RestTemplate Bean 提升 Interceptor 進而再加上了負載均衡設備的特點。針對 WebClient,會自行建立
ReactorLoadBalancerExchangeFilterFunction
,我們可以根據(jù)添加ReactorLoadBalancerExchangeFilterFunction
會添加負載均衡設備的特點。針對三方手機客戶端,一般不用大家附加配備哪些。
這種應用的實例,會在我們系列升級完最終的檢測一部分見到。
Spring Cloud LoadBalancer 構造介紹
系列產(chǎn)品以前的內(nèi)容大家提及了 NamedContextFactory,Spring Cloud LoadBalancer 這兒也是應用了這種體制建立了不一樣微服務架構應用不一樣的 Spring Cloud LoadBalancer 配備。有關關鍵完成是 @LoadBalancerClient
和 @LoadBalancerClients
這兩個注釋,及其 NamedContextFactory.Specification
的完成 LoadBalancerClientSpecification
,NamedContextFactory
的完成 LoadBalancerClientFactory
。如下圖所顯示:
能夠 根據(jù)
loadbalancer.client.name
這一特性獲得當今要構建的 Bean 是哪個微服務架構的能夠 了解默認設置 配備是
LoadBalancerClientConfiguration
,再查詢它里頭的源碼我們可以了解關鍵復位2個 Bean:ReactorLoadBalancer,負載均衡設備,由于有
@ConditionalOnMissingBean
因此 能夠被更換,這就是我們的拓展點ServiceInstanceSupplier,給予案例信息內(nèi)容的 Supplier,由于有
@ConditionalOnMissingBean
因此 能夠被更換,這就是我們的拓展點Specification 為 LoadBalancerSpecification,再剖析其啟用能夠 了解,能夠根據(jù)
@LoadBalancerClient
和@LoadBalancerClients
在LoadBalancerClientConfiguration
的根基上附加特定配備。