44 lines
764 B
Markdown
44 lines
764 B
Markdown
# hashring
|
||
|
||
A golang consistent hashring
|
||
|
||
Install
|
||
===
|
||
|
||
go get github.com/g4zhuj/hashring
|
||
|
||
Usage
|
||
===
|
||
|
||
|
||
```
|
||
// virtualSpots means virtual spots created by each node
|
||
nodeWeight := make(map[string]int)
|
||
nodeWeight["node1"] = 1
|
||
nodeWeight["node2"] = 1
|
||
nodeWeight["node3"] = 2
|
||
vitualSpots := 100
|
||
hash := NewHashRing(virtualSpots)
|
||
|
||
|
||
//add nodes
|
||
hash.AddNodes(nodeWeight)
|
||
|
||
//remove node
|
||
hash.RemoveNode("node3")
|
||
|
||
|
||
//add node
|
||
hash.AddNode("node3", 3)
|
||
|
||
|
||
//get key's node
|
||
node := hash.GetNode("key")
|
||
|
||
```
|
||
|
||
坑点:
|
||
// 一个9064767行的文件 每行做hashring,结果不一致 原因hashBytes只取4位 529和83 一致 ,这个库是一对多的关系,非多对一
|
||
// node=1000 vitualSpots=20000
|
||
//9063340 key=49f57cf0 node=529
|
||
//9063340 key=49f57cf0 node=83 |