继续Nginx WRR负载均衡算法的优化

温州皮鞋厂老板告诉我一个新的WRR算法,基于数组哈希,但还是有点过度设计了,我说对于3,2,1这样权重的3个元素,搞3个元素1,2个元素2,1个元素3,一共6个元素揉成一把,随机扔到6个格子里完事,只要足够随机,这个算法应该就是最好的!不是想当然最好,是必然最好的,因为它就是最大熵结论,宇宙是懒惰的,低熵体的维持需要努力!

  好吧,后来我承认了,我就是用的这个算法来做的reuseport优化,只是增加了一点一致性哈希的味道!


现在来看第二个问题。

  负载均衡器并不是指单独的一台机器,否则他就是单点!它本身也可能是被负载均衡的或者是自负载的。我们假设3台负载均衡 X X Y Z Z 分别负载集合G={A:a,B:b,C:c},按照我在上一篇文章里 O(n) O ( n ) O(1) O ( 1 ) 的预处理方法,假设集合 G G 在WRR算法的作用下生成了序列S=(aabcabcabaabcabc)

  那么3个负载均衡器将共享这个序列 S S ,流向对a的压力将会从序列 S S 的2个上升到2×3个,随着负载均衡器的数量增加到 n n 个,这个数字将会变成2×n。一个随机的结果再怎么也经不起叠加。怎么办?

  好办!再随机呗!

  再按照负载均衡器的数量 n n 生成一个随机序列S2=(m1,m2,....mn),其中 mi m i 只是序列 S S <script type="math/tex" id="MathJax-Element-2898">S</script>中的起始元素索引。这样,不同的负载均衡器收到的请求将会进行不同的轮询顺序,虽然只是一次凯撒密码变换,但总比直接用好!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值