Ribbon是Spring Cloud Netflix实现客户端负载均衡的技术实现。
为了使服务可以提高高可用性,服务会以集群的方式搭建。那么客户端请求最终会请求到集群中的哪个服务,在Spring Cloud Netflix中,可以指定Ribbon的负载均衡策略算法进行最终实现。
应用:
添加注解@LoadBalanced即可。
轮询算法是Ribbon的默认算法。
顾名思义,轮流讲请求打到每个服务节点。
优点:服务节点压力相等。
缺点:可能由于机器性能问题,某些服务器处理效率较慢,可能无法快速的响应请求,长时间积累可能会阻塞用户请求。
Ribbon的随机算法指的是,随机选择一台服务器响应客户端请求。
优点:实现简单。
缺点:存在选中挑选到响应比较慢的服务器,导致无法快速响应客户端请求。
Ribbon的加权算法,指的是在随机算法的基础上,给每个服务节点加上不同权重,可以实现某些服务节点的命中率。
优点:给处理效率比较高的节点加上更高的权重,避免选中那些处理效率比较慢的服务节点。
缺点:算法实现复杂,权重应该如何设置,不仅需要考虑机器的性能,还要时时根据网络的负载情况做出综合选择。
该算法会先移出一些故障节点,然后分析服务节点的并发数,选择较小并发的服务节点作为响应。
优点:快速响应。
缺点:实现复杂。