用统计学再省 100TB 内存:Cloudflare 给一致性哈希做减法
来源:blog.cloudflare.com — 419 分 · by f311a
📋 概述
Cloudflare 的一个 Pingora 服务被工单标记为 pingora-ketama 内存占用过高,团队由此用统计学重新审视了一致性哈希环。他们先算负载分布的变异系数,发现单哈希时误差极大:100 台服务器的场景下变异系数接近 99%,意味着有的机器要承担两倍请求而有的几乎空转。给每台服务器增加哈希点到 160 个能把变异系数压到约 8%,但继续加又会出现反效果——在 2048 台服务器的大机房中,每台 1 万到 10 万个哈希点时 32 位哈希的碰撞会重新引入失衡。于是他们把哈希点减下来,又用平滑迁移避免一次性换环无效化全网缓存,最终净省下 100TB 内存。
🔑 核心要点
- 起点是一张工单:pingora-ketama 内存占用过高。
- 问题被数学化:单哈希时 100 台服务器的变异系数接近 99%,负载严重倾斜。
- 加点的收益很明显:每台 160 个哈希点把变异系数压到约 8%。
- 但加点不是万能药:大机房(2048 台)里每台 1 万到 10 万点会因 32 位哈希碰撞重新失衡。
- 迁移比计算更危险:换哈希环会改变缓存路由,一次性切换等于让全网缓存集体失效。
- 最终收益可以量化:这次改动让内存用量下降了 100TB。
💡 金句
改变哈希环会改变一部分可缓存请求的去向,即便新环更好,整网一次性切换也等于让几乎所有缓存内容失效。
👍 0
👎 0
← 返回 Hacker News 首页