视频加载失败

一致性哈希:consistent 与 rendezvous 的对比

432 字
2 分钟
一致性哈希:consistent 与 rendezvous 的对比

一致性哈希要解决的问题:在节点集合会变化的分布式系统里,把 key 稳定地映射到节点上,使得增删节点时只影响尽量少的 key。常见实现有两类:

  • Consistent Hashing(环 + 虚拟节点):把节点和 key 都哈希到一个环上,key 沿环顺时针找到第一个节点;用虚拟节点改善均匀度。
  • Rendezvous Hashing(HRW,Highest Random Weight):对每个 key,计算它与所有节点的哈希分数,取分数最高的节点。没有环、没有虚拟节点,纯计算。

对比结论#

参考资料:

实测的两条核心结论:

  • rendezvous 的均匀度更好,所有场景的均值偏差都在 10% 以内。但当集群节点数较多时,rendezvous 更耗时:100 个节点时,rendezvous 的耗时是 consistent 的一倍(因为每个 key 都要和全部节点算一遍分数,O(n))。
  • consistent 随虚拟节点数量增加,均匀性越来越好,且虚拟节点数量基本不影响调度用时(哈希环 + 二分查找,O(log n))。但均匀度和 rendezvous 比始终有差距。

怎么选#

  • 节点数较少:直接选 rendezvous hash,简单且均匀。
  • 节点数较多且时间敏感:选 consistent hash。
  • 节点数较多但对均匀性要求更高、能接受耗时:依然选 rendezvous hash 来确保均匀性。

一句话:rendezvous 用计算时间换均匀度;consistent 用虚拟节点改善均匀度,查询则是哈希环上 O(log n) 的二分。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

一致性哈希:consistent 与 rendezvous 的对比
https://blog.81vm3.xyz/posts/consistent-hashing/
作者
Blume
发布于
2026-02-06
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Blume
I build interesting things.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
38
分类
5
标签
98
总字数
23,078
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录