rr 算法
type roundRobin struct {
s sd.Endpointer
c uint64
}
//client 原子+ then 取模
func (rr *roundRobin) Endpoint() (endpoint.Endpoint, error) {
endpoints, err := rr.s.Endpoints()
if err != nil {
return nil, err
}
if len(endpoints) <= 0 {
return nil, ErrNoEndpoints
}
old := atomic.AddUint64(&rr.c, 1) - 1
idx := old % uint64(len(endpoints))
return endpoints[idx], nil
}
todo wrr
Tags : 本文未设置标签
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站大部分内容收集于互联网,如果有侵权内容、不妥之处,请联系删除。敬请谅解!
Previous post
记一个go 并发外部归并排序遇到的小经验
Next post
必知:协程写入无缓冲 channel 为什么不会出现死锁