一致性哈希原理与应用
| 技术一致性哈希(Consistent Hashing)是分布式系统中的核心技术,本文介绍其原理和应用场景。
传统哈希的问题
假设有 N 台服务器,使用 h = Hash(key) % N 分配请求。
问题:当服务器数量变化时,大量 key 会被重新映射到不同服务器,导致缓存失效。
一致性哈希原理
将哈希值空间组织成一个虚拟圆环(0 ~ 2^32-1),服务器和数据都映射到环上。
数据定位
数据 key 使用哈希函数计算值后,沿环顺时针"行走",遇到的第一台服务器就是目标服务器。
容错性
- 服务器宕机:只有该服务器到前一台服务器之间的数据受影响
- 新增服务器:只有新服务器到前一台服务器之间的数据受影响
虚拟节点
问题:服务器数量少时,数据分布不均匀(数据倾斜)。
解决:引入虚拟节点,每个真实服务器对应多个虚拟节点,使数据分布更均匀。
实际应用中,虚拟节点数通常设置为 32 或更大。
应用场景
- 分布式缓存:Memcached、Redis 集群
- 负载均衡:Nginx、网关路由
- 数据库分片:分布式数据库
总结
一致性哈希实现了节点的增减只影响局部数据,保证了系统的单调性和扩展性,是分布式系统的标配技术。