匹配优先级和权重的比例问题

目录

匹配优先级和权重的比例问题

问题来源

答案

规矩总结

官方手册:


匹配优先级和权重的比例问题

问题来源

在一哥们面试时,面试官问了一个有意思的问题,即upstream的权重比1:5和2:10的区别?

这个问题其实并不难,但很多学习者都不会去注意这个问题,很多培训机构也不会去讲这个区别,那么到底有什么区别呢?看到这个问题的你是否知道呢?不急,看完本篇博文,保你会。
面试官问道这个问题,其实已经很刁钻的了。相信看完本篇博文,面试官问到你时,你肯定可以狠狠的扇HR一个耳光。开始正文

答案

答案:在只有两台后端服务器的时候:1:5和2:10是没有区别的,当有超过两台后端服务器的时候,就存在区别。A:B=1:5(或2:10)的时候,返回顺序是BBBBAB,A:B:C=4:3:2的时候,返回顺序为AABABCABC,当A:B:C=2:3:4的时候,返回顺序为CBCABCABC。
找规矩,找的懂的有肉吃,找不懂的没肉吃。PS:后面讲解规矩
比如有3台,A1 B2 C5 和A2 B2 C10的A和C就绝对不一样,虽然每个循环里,A和C的调度比例次数都是1比5,但是调度顺序是不一样的。

规矩总结

相信看完上图你已经知道了排序方法
总结:先找最大公约数,就是先约分,权重大的先排,排完减一,再比对,相同,从左到右排。

官方手册:

这是它的算法(LVS官方手册里给的)。其中gcd(S)就是最大公约数

while (true) {
  i = (i + 1) mod n;
    if (i == 0) {
        cw = cw - gcd(S);
        if (cw <= 0) {
            cw = max(S);
        if (cw == 0)
            return NULL;
        }
    }
  if (W(Si) >= cw)
    return Si;
}


 

 

猜你喜欢

转载自blog.csdn.net/zisefeizhu/article/details/81807599