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

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
abc
abc
acd
abc
acd


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

你可能感兴趣的:(go)