加权轮询算法是负载均衡算法中的一种。在负载均衡的场景下,后端服务器会根据其资源,如内存、cpu等,分配不同的权值。负载均衡器会根据权值分发请求。假设后端有3台服务器,其加权分别为A(5),B(3),C(2)。有10次请求到来时,可能的调度结果是AABACABCAB。
主要有两种常见的加权轮询算法。
1.循环迭代服务器列表,从中选出大于等于阈值的服务器。阈值初始为最大权值,每次迭代后衰减所有权值的最大公约数。以提到的情况为例。
权值的最大公约数为:1,即每次阈值衰减1
初始阈值为:5
迭代情况如下:
迭代5次,会选出的服务器序列为AAABABCABC。
2.方法1有一个缺陷,不够平滑,会出现访问集中的情况。为了避免这个问题,有了如下平滑加权随机算法。每个服务器有两个加权,一个是静态加权,另一个为动态加权。动态加权初始化为0。在每次迭代时,动态加权叠加上静态加权,然后根据这个值从服务其列表中选出最大的服务器。在本次迭代结束,被选出的服务器的动态加权要减去总的加权和。仍然以上面的情况为例。
加权和为:5+3+2=10
静态加权为:A 5,B 3,C 2
初始动态加权:A 0, B 3,C 2
迭代情况如下:
本文暂时没有评论,来添加一个吧(●'◡'●)