golang有用的库及工具 之 一致性哈希(Consistent Hashing)算法

来源:互联网 发布:淘宝如何设置活动秒杀 编辑:程序博客网 时间:2024/05/16 01:32

Consistent Hash  可用于  一致性哈希可用于解决服务器均衡问题。经配合 etcd使用

git 库地址:https://github.com/stathat/consistent


import "stathat.com/c/consistent"type Hash struct {   consistent *consistent.Consistent}func (h *Hash) Add(key string) {   h.consistent.Add(key)}func (h *Hash) Get(key string) (string, error) {   return h.consistent.Get(key)}func (h *Hash) Remove(key string) {   h.consistent.Remove(key)}func NewHash() *Hash {   consistent := consistent.New()   h := &Hash{consistent: consistent}   return h}

test:


hash:=NewHash()hash.Add("aaa")hash.Add("abc")hash.Add("acd")fmt.Println(hash.Get("1"))fmt.Println(hash.Get("2"))fmt.Println(hash.Get("3"))fmt.Println(hash.Get("4"))fmt.Println(hash.Get("5"))fmt.Println(hash.Get("6"))

输出:abc <nil>
abc <nil>
abc <nil>
acd <nil>
abc <nil>
acd <nil>


总结:通常在集群环境下,hash.Add 添加 集群环境节点相关地址,hash.Get  通过参数值映射数据到集群节点地址。

原创粉丝点击