Spring Cloud Netflix—客户端负载平衡器:Ribbon

Ribbon是一个客户端负载均衡器,它能够很好地控制HTTP和TCP客户端的行为。Feign已经使用Ribbon,因此若是您使用@FeignClient,则本节也适用。html

Ribbon中的中心概念是指定客户端的概念。每一个负载平衡器是组合的组合的一部分,它们一块儿工做以根据须要联系远程服务器,而且集合具备您将其做为应用程序开发人员(例如使用@FeignClient注释)的名称。Spring Cloud使用RibbonClientConfiguration为每一个命名的客户端根据须要建立一个新的合奏做为ApplicationContext。这包含(除其余外)ILoadBalancer,RestClient和ServerListFilter。spring

如何加入Ribbon服务器

要在项目中包含Ribbon,请使用组org.springframework.cloud和工件ID spring-cloud-starter-ribbon的起始器。有关使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面。负载均衡

自定义Ribbon客户端cdn

您可使用.ribbon.*中的外部属性来配置Ribbon客户端的某些位,这与使用Netflix API自己没有什么不一样,只能使用Spring Boot配置文件。本机选项能够在CommonClientConfigKey(功能区内核心部分)中做为静态字段进行检查。htm

Spring Cloud还容许您经过使用@RibbonClient声明其余配置(位于RibbonClientConfiguration之上)来彻底控制客户端。例:blog

@Configuration @RibbonClient(name = "foo", configuration = FooConfiguration.class) public class TestConfiguration { } 在这种状况下,客户端由RibbonClientConfiguration中已经存在的组件与FooConfiguration中的任何组件组成(后者一般会覆盖前者)。开发

警告 FooConfiguration必须是@Configuration,但请注意,它不在主应用程序上下文的@ComponentScan中,不然将由全部@RibbonClients共享。若是您使用@ComponentScan(或@SpringBootApplication),则须要采起措施避免包含(例如将其放在一个单独的,不重叠的包中,或者指定要在@ComponentScan)。 Spring Cloud Netflix默认状况下为Ribbon(BeanType beanName:ClassName)提供如下bean:源码

IClientConfig ribbonClientConfig:DefaultClientConfigImplit

IRule ribbonRule:ZoneAvoidanceRule

IPing ribbonPing:NoOpPing

ServerList ribbonServerList:ConfigurationBasedServerList

ServerListFilter 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。

源码来源:http://minglisoft.cn/honghu/technology.html
相关文章
相关标签/搜索