Spring Cloud之客户端负载平衡器:Ribbon
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
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的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Kubernetes 支持 Spring Cloud 负载均衡器吗?
Spring Cloud Commons教程Spring RestTemplate作为负载平衡器客户端
跟我学习Spring cloud-客户端负载平衡器:Ribbon