一致性哈希
- 一致性 Hash 算法将整个哈希值的空间组织成一个
0~2(32)
次方的虚拟的圆环 - 然后再求出分片服务器的
Hash
值, 根据分片服务器的 Hash 值将服务器配置到虚拟的圆环对应的位置 - 然后再求出需要保存数据键的 Hash 值, 根据求出的值在虚拟的圆环
顺时针
方向上存入对应的分片服务器中 - 如果保存数据键的 Hash 值超过
2(32)
次方,就会保存到第一台分片服务器上
假设如上图所示,我们的 hash 值为 1, 它在服务器1和服务器2之间那么它会进行顺时针的进行存储,也就是说会存储到服务器1当中,如上图画的比较简陋,但是大致意思就是如上图,如果新增了分片服务器,那么只需要迁移新增服务器之前的服务器与当前新增服务器的这段数据即可,其它位置的服务器分片都不需要进行改变, 采用一致性哈希会造成数据倾斜等问题,因为如果你的数据哈希值如果在服务器1和服务器2之间那么就会按照顺时针存储到服务器1当中那么,在访问的时候就会造成访问服务器1的比较多,这就造成了数据倾斜问题。