1.什么是一致性哈希
一致性哈希(Consistent Hashing)是一种分布式系统中的哈希算法,主要用于将请求或数据均匀分配到多个服务器或节点上。它解决了当服务器节点发生变化(如增加或减少服务器)时,如何最小化数据迁移的问题。一致性哈希的主要优点是高效和负载均衡,尤其在动态变化的分布式系统中表现出色。
-
哈希环: 一致性哈希将所有可能的哈希值组织成一个逻辑上的环(Hash Ring)。环的大小通常为哈希函数的输出范围。例如,使用SHA-1哈希函数,环的大小就是2^160。
-
节点位置: 每个节点(服务器)通过某种哈希函数(如SHA-1)计算出其位置(哈希值),并映射到环上。这些节点按哈希值的大小排列。
-
数据存储位置: 数据项通过同样的哈希函数计算哈希值,并映射到环上。数据项将被存储在顺时针方向最近的节点上。例如,如果数据项D的哈希值为H(D),它将存储在第一个哈希值大于或等于H(D)的节点上。
-
节点变动的影响:
- 增加节点:只会影响新增节点顺时针方向最近的一部分数据,因为这些数据项会被重新分配给新增的节点。
- 减少节点:只会影响被移除节点上的数据,这些数据会重新分配给其他节点。
-
虚拟节点: 为了提高负载均衡性,一致性哈希引入了虚拟节点的概念。每个物理节点会映射到