一、一致性哈希算法:一种特殊的哈希算法,目前主要应用于分布式缓存当中,可以有效地解决分布式存储结构下动态增加和删除节点所带来的问题。
- 一致性Hash算法是对2^32取模,2^32个点组成的圆环称为Hash环。根据服务节点的IP或者机器名称进行哈希,就能确定每台机器就能确定其在哈希环上的位置;
- 将数据key使用相同的函数Hash计算出哈希值,并确定此数据在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位到的服务器。
- 添加、删除节点的时候,只影响相邻一个节点的数据,其他节点的数据不影响。具有较好的扩展性和容错性。
- 为了防止数据分布不均匀,可以应用虚拟节点来映射物理节点。
二、hash槽:Redis准备了16384个hash槽,类似于Memcached Hash环上的一个个位置。 这16384个hash槽被分配给不同节点,存放数据时,根据数据的key计算出所在的槽,再根据槽找到对应的机器。hash函数为:CRC16(key) % 16384。
三、比较:
参考文档:
https://redis.io/topics/cluster-tutorial
https://blog.csdn.net/clz1314521/article/details/80604555
https://blog.csdn.net/truelove12358/article/details/79612954