如果不考虑均衡的话,现在有 n 个服务节点,完成业务流程只需要从这 n 个中挑选其中的一个,有几种思路:

  1. 按顺序挑:例如上次选了第一台,这次就选第二台,下次选第三台,依此类推。如果已经到了最后一台,那么下一次从第一台开始。这种情况下可以把服务节点信息都存储在数组中,每次请求完成下游之后,将一个索引后移即可,在移到尽头时再移回数组开头。

  2. 随机挑一个:每次都随机挑,真随机伪随机均可。假设选第 x 台机器,那么 x 可描述为rand.Intn() % n。

  3. 根据某种权重,对下游节点进行排序,选择权重最大或最小的那一个。

当然,实际场景不可能无脑轮询或者无脑随机,如果对下游请求失败了,还需要某种机制来进行重试。如果纯粹随机,存在一定的可能性让下一次选择的节点仍是问题节点。

最后编辑: kuteng  文档更新时间: 2022-03-22 19:29   作者:kuteng