整理SpringCloud微服务中学习中,Ribbon提供的若干个内置的负载规则。

Ribbon提供的若干个内置的负载规则,用户可以直接使用,基本可以满足大部分的需求,如果有更为复杂的要求,建议实现自定义负载规则。

主要规则如下:

  1. RoundRobinRule:系统默认规则,也是用的较多的一种规则。通过简单的轮询服务列表来选择服务器,其他的规则在很多情况下仍然使用RoundRobinRule。
  2. AvailabilityFilteringRule:顾名思义,有效性过滤规则。该规则会忽略一下服务器:
  • 无法连接的服务器:在默认情况下,如果 3 次连接失败,该服务器将会被置为 “短路”的状态,该状态将持续 30 秒,如果再次连接失败,“短路”状态的持 续 时 间 将 会 以 几 何 级 增 加 。 可 以 通 过 修 改 niws.loadbalancer<clientName>.connectionFailureCountThreshold 属性,来 配置连接失败的次数。

  • 高并发数过高的服务器:如果连接到该服务器的并发数过高,也会被这个规则忽略,可以通过修改<clientName>.ribbon.ActiveConnectionsLimit 属性来设定最高并发数。

     3.WeightedResponseTimeRule:为每个服务器赋予一个权重值,服务器的响应时间 越长,该权重值就是越少,这个规则会随机 选择服务器,这个权重值有可能会决定 服务器的选择。

     4.ZoneAvoidanceRule:该规则以区域、可用服务器为基础,进行服务器选择。使用 Zone 对服务器进行分类,可以理解为机架或者机房。

      5.BestAvailableRule:忽略“短路”的服务器,并选择并发数较低的服务器。

       6.RandomRule:顾名思义,随机选择可用的服务器。

       7.RetryRule:含有重试的选择逻辑,如果使用 RoundRobinRule 选择服务器无法连 接,那么将会重新选择服务器。

以上内容整理自《疯狂 Spring Cloud 微服务架构实战》这本书。作者:杨恩雄。本人也在学习,整理出来,供大家方便查看。

发布了22 篇原创文章 · 获赞 21 · 访问量 2090

猜你喜欢

转载自blog.csdn.net/weixin_41532316/article/details/97615637