• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

sping-cloud-ribbon原理解析:ribbon的几个核心类

java 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论

Ribbon是一个客户端负载均衡器,它可以很好地控制HTTP和TCP客户端的行为。Feign已经默认使用了Ribbon(参考文章)

一、先来看看ribbon的几个核心类

1、IClientConfig 默认实现类DefaultClientConfigImpl,主要用来配置ribbon客户端的相关属性配置

2、ServerListUpdater默认实现类PollingServerListUpdater,主要负责动态更新服务器列表

  • start方法调用后会启动一个定时任务,延时1s开始执行,以每30s的时间间隔周期执行

    • 周期时间间隔可以通过ribbon.ServerListRefreshInterval=1000或者ribbonClientName.ribbon.ServerListRefreshInterval=1000来设置

  • start方法的启动由DynamicServerListLoadBalancer初始化的时候执行调用

3、ServerList获取服务器列表

  • 默认实现类ConfigurationBasedServerList,默认是从配置文件取服务器列表,这样配置[ribbonClinetName].ribbon.listOfServers=xxx,xxx

  • ConsulServerList引入consul作服务发现的实现类,主要负责获取注册中心的服务器列表

    备注:可以通过配置来扩展自己的ServerList实现,像这样:[ribbonClient].ribbon.NIWSServerListClassName=类名

4、ServerListFilter服务器列表过滤器

  • 默认实现类ZonePreferenceServerListFilter主要根据分区来过滤服务器列表

  • HealthServiceServerListFilter引入consul服务发现的实现类,主要负责过滤consul健康检查通过的服务器列表(在ConsulServerList中会获取所有的服务器列表,包括健康检查没有通过的服务器)

    备注:可以通过配置来扩展自己的ServerList实现,像这样[ribbonClient].ribbon.NIWSServerListFilterClassName=类名

5、IPing检查服务器是否或者

  • 默认实现DummyPing,这是一个假的检测着,永远返回是true

  • ConsulPing,引入consul服务发现的实现类,主要根据consul返回的checks参数来判断服务器是否活着,跟HealthServiceServerListFilter的过滤判断一样

    备注:可以通过配置来扩展自己的ServerList实现,像这样:[ribbonClient].ribbon.NFLoadBalancerPingClassName=类名

6、IRule负载均衡选择器

  • 默认实现ZoneAvoidanceRule,复合判断server所在区域的性能和server的可用性选择server

  • RandomRule:随机选择一个server

  • RoundRobinRule:roundRobin方式轮询选择server

  • RetryRule:对选定的负载均衡策略机上重试机制。

  • WeightedResponseTimeRule:根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低。

  • AvailabilityFilteringRule:过滤掉那本文来源gao@!dai!ma.com搞$$代^@码5网@些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值)


  • 搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:sping-cloud-ribbon原理解析:ribbon的几个核心类

    喜欢 (0)
    [搞代码]
    分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址