golang实现权重轮询调度算法

package main

    import (
"fmt"
"time"
) var slaveDns = map[int]map[string]interface{}{
0: {"connectstring": "root@tcp(172.16.0.164:3306)/shiqu_tools?charset=utf8", "weight": 2},
1: {"connectstring": "root@tcp(172.16.0.165:3306)/shiqu_tools?charset=utf8", "weight": 4},
2: {"connectstring": "root@tcp(172.16.0.166:3306)/shiqu_tools?charset=utf8", "weight": 8},
} var i int = -1 //表示上一次选择的服务器
var cw int = 0 //表示当前调度的权值
var gcd int = 2 //当前所有权重的最大公约数 比如 2,4,8 的最大公约数为:2 func getDns() string {
for {
i = (i + 1) % len(slaveDns)
if i == 0 {
cw = cw - gcd
if cw <= 0 {
cw = getMaxWeight()
if cw == 0 {
return ""
}
}
} if weight, _ := slaveDns[i]["weight"].(int); weight >= cw {
return slaveDns[i]["connectstring"].(string)
}
}
} func getMaxWeight() int {
max := 0
for _, v := range slaveDns {
if weight, _ := v["weight"].(int); weight >= max {
max = weight
}
} return max
} func main() { note := map[string]int{} s_time := time.Now().Unix() for i := 0; i < 100; i++ {
s := getDns()
fmt.Println(s)
if note[s] != 0 {
note[s]++
} else {
note[s] = 1
}
} e_time := time.Now().Unix() fmt.Println("total time: ", e_time-s_time) fmt.Println("--------------------------------------------------") for k, v := range note {
fmt.Println(k, " ", v)
}
}

文章来源地址https://www.yii666.com/article/754053.html文章地址https://www.yii666.com/article/754053.html网址:yii666.com<网址:yii666.com文章来源地址:https://www.yii666.com/article/754053.html

来源: http://studygolang.com/articles/8924

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

golang实现权重轮询调度算法-相关文章

  1. 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现

  2. 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现3

  3. 权重轮询调度算法 java版本号

  4. 权重轮询调度算法(Weighted Round-Robin Scheduling)-C#实现

  5. golang实现权重轮询调度算法

  6. php版权重轮询调度算法

  7. loadbalance轮询算法 java实现

  8. 为什么JAVA要提供 wait/notify 机制?是为了避免轮询带来的性能损失

    wait/notify  机制是为了避免轮询带来的性能损失。为了说清道理,我们用“图书馆借书”这个经典例子来作解释。一本书同时只能借给一个人。现在有一本书,图书馆已经把这本书借了张三。在简单的synchrnozed 同步机制下,李四如果想借,先要去图书馆查看书有没有还回来。李

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png