一致性哈希原理
一致性哈希是一种分布式哈希技术,核心是将数据和节点映射到一个虚拟的环形哈希空间(通常为0~2³²-1的整数范围),通过“顺时针最近”原则定位数据存储位置,从而大幅降低节点增删时的数据迁移量。
其工作原理可分为三步:
1.哈希环构建:将整个哈希值空间想象成一个闭合的圆环。
2.节点映射:对每个服务器节点(如IP或主机名)计算哈希值,将其固定在哈希环上。
3.数据映射:对数据的Key计算哈希值,在环上顺时针查找,将数据存储到第一个遇到的服务器节点上。
为解决节点分布不均的“数据倾斜”问题,引入虚拟节点机制:为每个物理节点分配多个虚拟节点并映射到环上,通过增加虚拟节点数量,让节点在环上分布更均匀。
一致性哈希应用
一致性哈希主要用于解决分布式系统中“数据与节点如何高效匹配”的问题,典型应用场景包括:
-
分布式缓存:如Memcached、Redis集群。当缓存节点扩容或下线时,仅需迁移少量数据(仅为新增/删除节点在环上“负责”的区间数据),避免大量缓存失效导致的“缓存雪崩”。
-
负载均衡:在分布式服务集群中,将用户请求或任务通过一致性哈希分配到不同服务器,确保单个节点故障时,仅影响其负责的部分请求,且新节点上线后能平滑接管流量。
-
分布式存储:在分布式文件系统(如Ceph)或数据库分片(如MongoDB分片)中,用一致性哈希决定数据块的存储节点,简化数据定位逻辑,提升集群扩展的灵活性。