Spring Cloud Netflix之客户端负载均衡器:Ribbon

本文详细介绍了Spring Cloud Netflix中的Ribbon客户端负载均衡器,包括如何定制Ribbon客户端、使用Ribbon与Eureka配合、如何在没有Eureka的情况下使用Ribbon以及Ribbon的配置选项。Ribbon是一个核心概念是命名客户端的负载均衡器,可以配合Feign使用。通过配置,可以实现客户端的负载均衡策略、服务发现和线程池配置等。
摘要由CSDN通过智能技术生成

Ribbon是一个客户端负载均衡器,它提供了对HTTP和TCP客户端的行为的大量控制。Feign已经在使用Ribbon了,所以如果你在使用@FeignClient,那么这个部分也适用。

Ribbon中的一个核心概念是命名客户端。每个负载均衡器都是组件集合的一部分,这些组件一起工作,根据需要联系远程服务器,集成有一个名称,作为应用程序开发人员使用(比如:使用@FeignClient注解)。Spring Cloud使用RibbonClientConfiguration根据需要为每个命名客户端创建一个新的集成作为ApplicationContext。其中包括一个ILoadBalancer、一个RestClient和一个ServerListFilter。

怎样引入Ribbon

项目中引入Ribbon,通过starter使用group org.springframework.cloud and artifact id spring-cloud-starter-netflix-ribbon

定制Ribbon客户端

您可以使用<client>.ribbon.*中的外部属性配置Ribbon客户机的一些位。除了可以使用Spring Boot configuration files之外,这与本地使用Netflix api没有什么不同。可以在CommonClientConfigKey(ribbon-core的一部分)中将本机选项检查为静态字段。

Spring Cloud还允许您使用@RibbonClient声明额外的配置(在RibbonClientConfiguration之上),从而完全控制客户端。例子:

@Configuration
@RibbonClient(name = "foo", configuration = FooConfiguration.class)
public class TestConfiguration {
}

在这种情况下,客户端是由RibbonClientConfiguration中已经存在的组件以及FooConfiguration中的任何组件组成的(后者通常会覆盖前者)。

FooConfiguration必须是@Configuration,但是要注意它不是在用于主应用程序上下文的@ComponentScan中,否则它将被所有@RibbonClients共享。如果您使用@ComponentScan(或@SpringBootApplication),您需要采取步骤来避免包含它(例如,将它放在一个单独的、不重叠的包中,或者指定在@ComponentScan中显式扫描的包)。Spring Cloud Netflix默认为ribbon提供了以下bean (BeanType beanName: ClassName):

  • IClientConfig ribbonClientConfig: DefaultClientConfigImpl
  • IRule ribbonRule: ZoneAvoidanceRule
  • IPing ribbonPing: DummyPing
  • ServerList<Server> ribbonServerList: ConfigurationBasedServerList
  • ServerListFilter<Server> ribbonServerListFilter: ZonePreferenceServe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值