请简要说明哈希算法和一致性哈希算法的基本原理,并说明采用一致性哈希算法的原因。
简答题
请简要说明哈希算法和一致性哈希算法的基本原理,并说明采用一致性哈希算法的原因。
答案:哈希算法:对key进行哈希,然后取模映射到节点,如key%N。一致性哈希:将节点和数据都映射到哈希环上,数据沿环顺时针找到第一个节点。一致性哈希在节点增减时只需迁移少量数据,而哈希算法需要重新映射几乎所有数据。
解析
参考答案
- 哈希算法:对 key 做哈希运算,再对节点数 N 取模(key % N),把数据映射到固定节点上。
- 一致性哈希:把节点和数据都映射到同一个哈希环(0 ~ 2^32-1)上,数据沿环顺时针找到第一个节点作为归属节点。
- 采用原因:节点增减时,普通哈希的 N 变化会导致几乎所有 key 重新映射;一致性哈希只影响环上相邻区间的少量数据,迁移成本小。
得分点解析
1. 哈希算法原理:必须点出"哈希 + 取模"两步,取模是理解后续缺陷的前提。
2. 一致性哈希原理:核心是"哈希环 + 顺时针查找第一个节点",缺一不可。
3. 优点(节点变化影响小):这是采用它的根本动机,也是本题的价值落点。
考点延伸
- 普通哈希在扩容、缩容、宕机时会引起缓存大面积失效,容易压垮后端数据库。
- 一致性哈希存在数据倾斜问题,通常引入虚拟节点(每个物理节点映射多个虚拟节点)来均衡负载。
- 该算法广泛用于分布式缓存(如 Redis 集群)、负载均衡和服务发现等场景。