https://github.com/ning1875/falcon-plus 这是我对开源版本falcon的变更
最重要的一点忘了写了:一致性哈希算法为啥能在节点变更的时候只有少量key迁移是因为sortkeys列表其实就是一个哈希环,客户端的哈希值和存量的节点哈希值在有序的sortkeys列表中的相对位置没有变,变的是下线节点前面的哈希到再前面一个之间的值所以变更率为:1-n/m
open-falcon中transfer会为judge和graph生成两个一致性哈希环
func initNodeRings() {
cfg := g.Config()
JudgeNodeRing = rings.NewConsistentHashNodesRing(int32(cfg.Judge.Replicas), cutils.KeysOfMap(cfg.Judge.Cluster))
GraphNodeRing = rings.NewConsistentHashNodesRing(int32(cfg.Graph.Replicas), cutils.KeysOfMap(cfg.Graph.Cluster))
}
哈希环的目的是为了给每个上报上来的counter:endpoint+