第18章 SpringCloud生态(二)

18.11 说说你了解的负载均衡算法

难度:★★

重点:★★★★

白话解析

常用的负载均衡算法有:

1、轮询(Round Robin):说白了就是让服务器排好队,一个个轮着来调用;Ribbon默认采用该算法。

  • 优点:实现起来简单;

  • 缺点:服务器性能不一样的情况下,导致能力强的会经常空闲。

2、加权轮询(WeightedRound-Robin):说白了就是在轮询的基础之上给个权重,实现起来也比较简单,例如有三台服务器A、B、C,权重分别是A=10%、B=30%、C=60%,在请求来的时候让着三台服务器按如下排队:A、B、B、B、C、C、C、C、C、C;然后一直循环这样的排队就完事了。

  • 缺点:不够平滑,前4次请求都不会落在C服务器上。

3、随机:就一个Random函数搞定。也不适合性能不一样的服务器。

4、加权随机:在随机的基础之上给权重。Dubbo默认采用该算法,但是默认情况下权重都是相同的。

5、Hash:根据每个每个请求ip(也可以是某个标识)ip.hash() % server.size()。

  • 优点:将来自同一IP地址的请求,同一会话期内,转发到相同的服务器;实现会话粘滞。

  • 缺点&#x

你可能感兴趣的:(白话Java面试,spring,cloud,spring,后端,ribbon,rpc,feign,nacos)