Cloudflare Saves 100 TB RAM via Consistent Hashing Optimization
Cloudflare reduced memory usage in its internal load balancing service by over 100 TB by optimizing the consistent hashing algorithm in Pingora. The team used probabilistic analysis to determine the minimum number of hash points required for proper distribution, reducing per-server hash counts by ~90% while maintaining accuracy. Further savings were achieved by compressing the Rust data structures storing hash values.
Full Report
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/