本节中的场景是从 N 个节点中选择一个节点发送请求,初始请求结束之后,后续请求会重新对数组洗牌,所以每两个请求之间没有关联。因此本节最开始的洗牌算法,不初始化随机库的种子理论上也没有什么问题。

但在一些特殊的场景下,例如使用 ZooKeeper 时,客户端初始化从多个服务节点中挑选一个节点后,是会向该节点建立长连接的。之后客户端请求都会发往该节点,直到该节点不可用才会在节点列表中挑选下一个节点。在这种场景下,初始连接节点的选择就必须是真随机了,否则,所有客户端启动时,都会去连接同一个 ZooKeeper 的实例,根本无法起到负载均衡的目的。

如果在日常开发中,当前业务也是类似的场景,就必须考虑一下是否会发生类似的情况。

rand设置种子:

rand.Seed(time.Now().UnixNano())
最后编辑: kuteng  文档更新时间: 2022-03-22 19:29   作者:kuteng