Not*_*tMe 10
这里的简单算法并不复杂.
假设您有一个具有以下权重的服务器列表:
A 10
B 20
C 30
Run Code Online (Sandbox Code Playgroud)
较高的重量代表它可以处理更多的流量.
只需按重量划分发送到每个服务器的流量,并将最小值排序为最大值.最顶层的服务器获得用户.
例如,假设每个服务器从10个用户开始,那么订单将是:
C - 10 / 30 = 0.33
B - 10 / 20 = 0.50
A - 10 / 10 = 1.00
Run Code Online (Sandbox Code Playgroud)
这意味着接下来的5个请求将转到服务器C.第6个请求将转到C或B.第7个请求将转到没有处理第6个的任何一个.
更复杂的是,您可能希望平衡器更加智能化.在这种情况下,它需要跟踪每个服务器当前正在服务的请求数量,并在完全满足请求时减少它们.
进一步的复杂性包括增加会话的粘性.这意味着平衡器必须检查会话ID的每个请求并跟踪它们上次去的位置.
总的来说,如果你能从已经做到这一点的公司购买产品.