Spring Cloud Ribbon,基于Ribbon实现的客户端负载均衡解决方案,这里的客户端指的是远程服务。
基本使用
1 |
|
自动基于服务名组装服务地址
1 |
|
1 |
|
也可以根据服务名查找选择服务,然后拼装服务地址。
1 |
|
注:spring-cloud-starter-eureka和spring-cloud-starter-consul-discovery已经依赖了spring-cloud-starter-ribbon
1 |
|
方法
get
post
put
delete
原理
-
ILoadBalancer
负载均衡器
- BaseLoadBalancer
-
IPing
检查服务实例是否正常
-
IPingStrategy
服务检查策略
-
SerialPingStrategy
线性遍历策略
-
-
IRule
负载均衡策略
- RoundRobinRule
- ZoneAvoidanceRule
-
-
DynamicServerListLoadBalancer:动态更新服务实例清单(支持和从注册中心获取)并过滤
-
ServerList
服务清单
- DiscoveryEnabledNIWSServerList
-
ServerListUpdater
服务清单更新
- UpdateAction
-
ServerListFilter
服务清单过滤
-
ZonePreferenceServerListFilter
1
2# 基于zone优先 eureka.instance.metadata-map.zone=zone1
-
-
- ZoneAwareLoadBalancer:默认
- BaseLoadBalancer
配置
默认配置类RibbonClientConfiguration
1 |
|
Spring Cloud Ribbon默认实现(没有集成Eureka时)
| BeanType | beanName | ClassName | ClassName | 备注 |
| ———————— | ———————– | —————————— | —————————————- | —- |
| IClientConfig | ribbonClientConfig | DefaultClientConfigImpl | | |
| IRule | ribbonRule | ZoneAvoidanceRule | | |
| IPing | ribbonPing | NoOpPing | NIWSDiscoveryPing | |
| ServerList
自定义配置
1 |
|
自定义全局ribbon client
1 |
|
自定义服务级ribbon client
1 |
|
备注:CustomizedRibbonConfiguration不要被@ComponentScan
扫描到,否则是全局共享的
配置文件
属性
ribbon相关属性定义参见CommonClientConfigKey
1 |
|
1 |
|
例如:
1 |
|
例如:
1 |
|
服务级ribbon client
1.2.0开始支持,目前支持如下key:
1 |
|
例如:
1 |
|
备注:不支持配置全局ribbon client,除非扩展PropertiesFactory