/consistentHash

一致性哈希

Primary LanguageGo

一致性哈希

实现方式

定义maxUint32长度环(数组实现,数组中存放已有节点的插槽id)

使用虚拟节点实现平衡

  • 新增节点时 生成n个虚拟节点并将0到n-1个虚拟节点的下一节点中数据平衡到当前虚拟节点中
  • 删除节点时 将节点中所有虚拟节点移除 并将所有数据转移
  • 查询节点时 计算key的哈希值 找到离哈希值最近的虚拟节点 再从虚拟节点映射中找到真实节点

支持查询节点和rehash节点2种方式

可优化点

  • 环可使用红黑树实现 提高增加删除速度
  • 可以写一个工具函数 适配常见基础类型key