cch123 / blog_comment

comments of xargin.com
8 stars 0 forks source link

你的负载均衡真的均衡么? #36

Open cch123 opened 6 years ago

cch123 commented 6 years ago

http://xargin.com/load-balance/

imhuster commented 5 years ago

话说为什么不用 Fisher–Yates shuffle 洗牌算法呢?

func Shuffle(slice []int) {
    for i := len(slice) - 1; i >= 0; i-- {
        j := rand.Intn(i + 1)
        slice[i], slice[j] = slice[j], slice[i]
    }
}
cch123 commented 5 years ago

@imhuster ,

  1. 原作者大概觉得这个洗牌算法就已经均匀了
  2. fisher yates 在标准库内就有,不熟悉标准库呗
imhuster commented 5 years ago

@imhuster ,

1. 原作者大概觉得这个洗牌算法就已经均匀了

2. fisher yates 在标准库内就有,不熟悉标准库呗

哦哦,理解了。

z1s1n commented 5 years ago

如果不洗牌,直接取呢?洗牌那不是增加是时间消耗吗

cch123 commented 5 years ago

@chazyu1996 ,洗牌是应该考虑到如果取第一个节点失败了会继续取第二个,直接取的话,那失败了可能导致数组里后面那个节点的流量变大

update.2019.12.04 仔细想了想,理论上是可以不洗牌的,用互质数的性质来做依次遍历就可以完成伪随机的功能了