一致性哈希:让数据分布更“均匀“的魔法算法
618 | 一致性哈希:让数据分布更"均匀"的魔法算法想象你开了100家快递驿站,要把10万个包裹分到各个驿站。简单哈希的做法:驿站编号 = hash(包裹ID) % 100问题是:一旦某个驿站倒闭,需要重新分配所有包裹,数据迁移量巨大!一致性哈希:巧妙解决这个痛点。一、为什么需要一致性哈希?普通哈希的问题假设我们有3台服务器,用普通哈希分配数据:hash(key) % 3 key1 - hash("key1") % 3 = 0 - Server 0 key2 - hash("key2") % 3 = 1 - Server 1 key3 - hash("key3") % 3 = 2 - Server 2看起来很均匀。但是!某天流量暴涨,需要扩容到4台服务器:hash(key) % 4 key1 - hash("key1") % 4 = ? // 可能变成2! key2 - hash("key2") % 4 = ? // 可能变成0! key3 - hash("key3") % 4 = ? // 可能变成1!几乎所有数据都需要重新映射!