Cloudflare 通过优化一致性哈希节省了 100 TB 内存
作者:Renato Losio
Cloudflare 通过重构 pingora-ketama 的一致性哈希实现,将负载均衡服务内存占用降低超 100 TB。核心优化在于基于概率建模确定最小必要哈希点数,使每服务器哈希数量减少约 90%,同时保障负载分布精度。
哈希环条目压缩依赖对碰撞率与分布偏差的量化分析;误差每降一数量级,所需哈希点数近似增一数量级;加权与多配置场景下的哈希环膨胀是内存瓶颈主因。
适合 SRE、分布式系统工程师、高性能网络代理开发者阅读。
Cloudflare 近期撰文介绍了通过优化 pingora-ketama 中一致性哈希的 Rust 实现 将内部负载均衡服务的内存占用减少了超 100 TB 。相关改动压缩了哈希环条目,并利用对哈希分布和碰撞率的统计分析,在保持负载均衡准确性的同时,将每个后端服务器的哈希数量减少了约 90%。
Cloudflare 在 Pingora 后端路由中依靠一致性哈希在多台服务器之间分发可缓存请求,为了支持加权服务器和不同的功能组合,系统需要维护大量哈希环,这使得内存开销大幅上涨。团队定位到内存过高的根源来自 pingora-ketama 一致性哈希数据结构,随即对其设计展开调研与优化。
Cloudflare 将概率论应用到一致性哈希中,计算出满足分布要求所需的最少哈希点数,从而在维持预期分布效果的同时大幅缩减哈希结构的规模。
Cloudflare 首席分布式系统工程师 Kevin Guthrie 、高级软件工程师 Mariia Iurchenko 、系统工程师 Zaidoon Abd Al Hadi 以及性能工程师 Ivan Babrou 写道:
误差每降低一个数量级,(几乎)需要每服务器哈希数量增加一个数量级,因此继续增加哈希带来的收益会越来越小。
增加哈希数量对负载分布的优化效果边际递减,最后新增的 90000 个哈希仅把误差改善了 0.7%。团队基于该分析,将单台服务器的哈希数量减少了 90%。 生日悖论 (描述随机取值集合中碰撞概率远超直觉的现象)也解释了为什么随着 32 位哈希点变多,碰撞概率持续上升,进而引入额外的分布误差。
团队还对存储剩余哈希值的 Rust 数据结构进行了优化:原有实现使用 8 字节的 Point 结构体,但哈希值与服务器索引其实仅需 6 字节即可存放,这进一步节省了内存。Guthrie、Iurchenko、Abd Al Hadi 和 Babrou 补充道:
还有一个问题:修改哈希环会改变部分可缓存请求的路由目标。即便新哈希环效果更好,一次性切换整个网络实际上会使几乎所有缓存内容失效。内存优化反而会引发回源流量暴涨,造成灾难性后果。
新的实现是逐步推出的,与现有哈希环并行运行,以此控制缓存抖动,避免回源流量尖峰。
在热门的 Hacker News 和 Reddit 讨论帖中,许多开发者争论一致性哈希虽然存在开销,但为什么依旧有用,以及它和请求哈希有什么区别。用户 Teanut 写道 :
看到在大规模场景下微小的改变能产生什么效果,这很有意思。很好地运用了数学来论证这些改变。
Pingora 后端路由并不是 Cloudflare 首个大规模内存优化项目,今年 8 月,该公司曾介绍其 DNS 团队通过一系列数据结构优化 降低了 DNS 缓存的内存占用 。
查看英文原文: https://www.infoq.com/news/2026/10/cloudflare-hashing-optimization/
促进软件开发及相关领域知识与创新的传播
关于我们 我要投稿 合作伙伴 加入我们 关注我们
联系我们 内容投稿:editors@geekbang.com 业务合作:hezuo@geekbang.com 反馈投诉:feedback@geekbang.com 加入我们:zhaopin@geekbang.com 联系电话:010-64738142 地址:北京市朝阳区望京北路9号2幢7层A701
InfoQ 近期会议 上海 · QCon 全球软件开发大会 2026.10.22-24 北京 · AICon 全球人工智能开发与应用大会 2026.12.18-19
全球 InfoQ InfoQ En InfoQ Jp InfoQ Fr InfoQ Br
Copyright © 2026, Geekbang Technology Ltd. All rights reserved. 极客邦控股(北京)有限公司 | 京 ICP 备 16027448 号 - 5 京公网安备 11010502039052号 | 产品资质
本文内容由 ai007 从公开渠道聚合,版权归原作者所有。若原文已删除或变更, 以原文站为准;本站存档仅为便于查阅而保留。