摘要
Ribbon是SpringCloud框架中使用比较广泛的负载均衡工具,很多组件中都通过其作为负载均衡工具,如:Feign
参考文档:http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html#spring-cloud-ribbon
略:16.5,16.8-17
正文
1 Ribbon的maven坐标
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
2 配置Ribbon客户端
2.1 针对某个服务配置
针对某个服务配置Ribbon,有两种方式。
1. 通过在配置文件加入<service-name>.ribbon.*
进行配置,优先生效于配置类,具体的配置属性可以查看CommonClientConfigKey
类。常用配置如下:
`<service-name>.ribbon.NFLoadBalancerClassName`: Should implement ILoadBalancer
`<service-name>.ribbon.NFLoadBalancerRuleClassName`: Should implement IRule
`<service-name>.ribbon.NFLoadBalancerPingClassName`: Should implement IPing
`<service-name>.ribbon.NIWSServerListClassName`: Should implement ServerList
`<service-name>.ribbon.NIWSServerListFilterClassName`: Should implement ServerListFilter
通过配置类进行配置。
下面以user-service服务为例,讲解如何通过配置类配置。
@Configuration
@RibbonClient(name = "user-service", configuration = UserServiceRibbonConfig.class)
public class UserServiceConfig {
}
UserServiceConfig
不能被Spring容器扫描到,否则将会成为全局Ribbon配置类。
下面是Ribbon默认的配置
Bean Type | Bean Name | Class Name |
---|---|---|
IClientConfig | ribbonClientConfig | DefaultClientConfigImpl |
IRule | ribbonRule | ZoneAvoidanceRule |
IPing | ribbonPing | DummyPing |
ServerList | ribbonServerList | ConfigurationBasedServerList |
ServerListFilter | ribbonServerListFilter | ZonePreferenceServerListFilter |
ILoadBalancer | ribbonLoadBalancer | ZoneAwareLoadBalancer |
ServerListUpdater | ribbonServerListUpdater | PollingServerListUpdater |
2.2 全局Ribbon配置
@RibbonClients(defaultConfiguration = DefaultRibbonConfig.class)
public class RibbonClientDefaultConfig {
}
3 同Eureka一起使用
当Eureka被使用时,Ribbon的服务列表将从Eureka获取。
4 没有Eureka使用方式
当没有Eureka时,可以将服务列表配置在配置文件中
user-service:
ribbon:
listOfServers: url1,url2...
5 禁止Eureka
加入配置:ribbon.eureka.enabled=false
设置启动加载服务列表
每个服务的客户端默认延迟加载,即在服务第一次请求时加载。
设置程序启动加载服务客户端
ribbon:
earger-load:
enable:true
clients:client1,client2...
未完待续