1. 程式人生 > >跟我學習Spring Cloud之客戶端負載平衡器:Ribbon

跟我學習Spring Cloud之客戶端負載平衡器:Ribbon

電子商務 springcloud spring cloud springcloud微服務 微服務雲架構

Ribbon是一個客戶端負載均衡器,它可以很好地控制HTTP和TCP客戶端的行為。Feign已經使用Ribbon,所以如果您使用@FeignClient,則本節也適用。

Ribbon中的中心概念是指定客戶端的概念。每個負載平衡器是組合的組合的一部分,它們一起工作以根據需要聯系遠程服務器,並且集合具有您將其作為應用程序開發人員(例如使用@FeignClient註釋)的名稱。Spring Cloud使用RibbonClientConfiguration為每個命名的客戶端根據需要創建一個新的合奏作為ApplicationContext這包含(除其他外)ILoadBalancerRestClient

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

beanName: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