简介
负载均衡是集群,分布式服务中绕不开的一个话题,采用什么样的算法最合理?只有根据自己的业务场景来决定,现在介绍下nginx中的一种较为合理的均衡算法,平滑加权轮询算法。
假如不考虑服务器之间的性能差异,那么最合理的算法莫过于随机,最简单,最实用,也最不容易出错。
假如考虑服务器之间的性能差异,比如每台机器有不同的权值,那么就不可取随机了。
平滑加权轮询算法流程
请求序号 | 选中之前权值 | 选中 | 选中之后
----|------|----
1 | 4,2,1 | a|-3,2,1
2 | 1,4,2 | b|1,-3,2
3| 5,-1,3|a|-2,-1,3
4|2,1,4|c|2,1,-3
5|6,3,-2|a|-1,3,-2
6|3,5,-1|b|3,-2,-1
7|7,0,0|a|0,0,0
示例:比如第一次请求,选权值最高的a(非常显然),选完之后,<b>命中者</b>的权值减掉权值和(4+2+1=7),得到-3,2,1, 然后再加上原权值(4,2,1),变成(1,4,2)
测试
通过此算法得出的大量数据表明,分配是绝对的平滑均匀合理的。
网友评论