2.2.1.2 一致性哈希分区(Consistent hashing)
原理
- 环形 hash 空间
按常用 hash 算法,将对应的 key hash到一个具有 2^32
个桶的空间,即(0 ~ 2^32
- 1)的数字空间中。
将这些数字头尾相连,想象成一个闭合环形:
-
把数据通过一定的 hash 算法映射到环上
-
将机器通过一定的 hash 算法映射到环上
-
节点按顺时针转动,遇到的第一个机器,就把数据放在该机器
-
把对象映射到hash空间
把cache映射到hash空间
基本思想就是将对象和cache都映射到同一个hash数值空间中, 并且使用相同的hash算法
hash(cache A) = key A;
hash(cache C) = key C;
在移除 or 添加一个 cache 时,能够尽可能小的改变已存在的 key 映射关系
Consistent hashing 一致性算法
移除 Cache
- 删除CacheB后,橙色区为被影响范围
添加Cache![](https://img-blog.csdnimg.cn/dfe4a2f89dae48e4abf7017814330f7c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_SmF2YUVkZ2U=,size_16,color_FFFFFF,t_70)
- 理想的分布式
现实却很拥挤-即倾斜性: