首页>>后端>>Golang->Golang实现加权轮询负载均衡

Golang实现加权轮询负载均衡

时间:2023-11-30 本站 点击:1

实现加权轮询负载均衡思路

代码实现一个加权负载均衡

Weight 初始化时对节点约定的权重

currentWeight 节点临时权重,每轮都会变化

effectiveWeight 节点有效权重,默认与Weight相同

totalWeight 所有节点有效权重之和:sum(effectiveWeight)

代码实现一个加权负载均衡

currentWeight = currentWeight+effecitveWeight

选中最大的 currentWeight 节点为选中节点

currentWeight = currentWeight-totalWeight (4+3+2=9)

所以我们能够 在表格模拟运行情况:

请求次数请求前currentWelght选中的节点请求后currentWelght1[serverA=4,serverB=3,serverC=2]serverA[serverA=-1,serverB=6,serverC=4]2[serverA=-1,serverB=6,serverC=4]serverB[serverA=3,serverB=0,serverC=6]3[serverA=3,serverB=0,serverC=6]serverc[serverA=7,serverB=3,serverC=-1]4[serverA=7,serverB=3,serverC=-1]serverA[serverA=2,serverB=6,serverC=1]5[serverA=2,serverB=6,serverC=1]serverB[serverA=6,serverB=0,serverC=3]6[serverA=6,serverB=0,serverC=3]serverA[serverA=1,serverB=3,serverC=5]7[serverA=1,serverB=3,serverC=5]serverc[serverA=5,serverB=6,serverC=-2]

加权轮询负载均衡代码

测试代码

测试结果

$gotest2021/06/1819:17:57Failedtoconnectto127.0.0.1:2181:dialtcp127.0.0.1:2181:i/otimeout127.0.0.1:2003127.0.0.1:2005127.0.0.1:2003127.0.0.1:2003127.0.0.1:2005127.0.0.1:2003127.0.0.1:2003127.0.0.1:2003127.0.0.1:2005127.0.0.1:2003127.0.0.1:2005127.0.0.1:2003127.0.0.1:2003127.0.0.1:2005127.0.0.1:2003127.0.0.1:2003127.0.0.1:2003127.0.0.1:2003127.0.0.1:2005PASSokgateway/pratise/proxy/load_balance1.124s

从测试结果我们可以看出,2003 为 2005 的两倍,符合权重设置结果


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Golang/4574.html