跟我學習Spring Cloud之客戶端負載平衡器:Ribbon
Ribbon是一個客戶端負載均衡器,它可以很好地控制HTTP和TCP客戶端的行為。Feign已經使用Ribbon,所以如果您使用@FeignClient
,則本節也適用。
Ribbon中的中心概念是指定客戶端的概念。每個負載平衡器是組合的組合的一部分,它們一起工作以根據需要聯系遠程服務器,並且集合具有您將其作為應用程序開發人員(例如使用@FeignClient
註釋)的名稱。Spring Cloud使用RibbonClientConfiguration
為每個命名的客戶端根據需要創建一個新的合奏作為ApplicationContext
。這包含(除其他外)ILoadBalancer
,RestClient
ServerListFilter
。
如何加入Ribbon
要在項目中包含Ribbon,請使用組org.springframework.cloud
和工件ID spring-cloud-starter-ribbon
的起始器。有關使用當前的Spring Cloud發布列表設置構建系統的詳細信息,請參閱Spring Cloud項目頁面。
自定義Ribbon客戶端
您可以使用<client>.ribbon.*
中的外部屬性來配置Ribbon客戶端的某些位,這與使用Netflix API本身沒有什麽不同,只能使用Spring Boot配置文件。本機選項可以在CommonClientConfigKey
(功能區內核心部分)中作為靜態字段進行檢查。
Spring Cloud還允許您通過使用@RibbonClient
聲明其他配置(位於RibbonClientConfiguration
之上)來完全控制客戶端。例:
@Configuration @RibbonClient(name = "foo", configuration = FooConfiguration.class) public class TestConfiguration { }
在這種情況下,客戶端由RibbonClientConfiguration
中已經存在的組件與FooConfiguration
中的任何組件組成(後者通常會覆蓋前者)。
Spring Cloud Netflix默認情況下為Ribbon(BeanType
ClassName
)提供以下bean:
IClientConfig
ribbonClientConfig:DefaultClientConfigImpl
IRule
ribbonRule:ZoneAvoidanceRule
IPing
ribbonPing:NoOpPing
ServerList<Server>
ribbonServerList:ConfigurationBasedServerList
ServerListFilter<Server>
ribbonServerListFilter:ZonePreferenceServerListFilter
ILoadBalancer
ribbonLoadBalancer:ZoneAwareLoadBalancer
ServerListUpdater
ribbonServerListUpdater:PollingServerListUpdater
創建一個類型的bean並將其放置在@RibbonClient
配置(例如上面的FooConfiguration
)中)允許您覆蓋所描述的每個bean。例:
@Configuration public class FooConfiguration { @Bean public IPing ribbonPing(IClientConfig config) { return new PingUrl(); } }
這用PingUrl
代替NoOpPing
。
更多資料來源
跟我學習Spring Cloud之客戶端負載平衡器:Ribbon