一致性hash算法(hash环)
概念
一致性哈希算法是对2^32取模
如果解决hash环的偏移
实际使用时,请求可能分布机器不均匀,多个请求顺序匹配同一台机器,这个情况就是hash环的偏移。 使用虚拟节点,使机器的分布更加均匀,避免请求都打到同一个机器上的问题。
与哈希槽的区别
- 哈希槽并不是闭合的,key的定位规则是根据
CRC-16(key) % 16384
的值来判断属于哪个槽区,从而判断该key属于哪个节点,而一致性哈希是根据hash(key)的值来顺时针找第一个hash(ip)的节点,从而确定key存储在哪个节点。 - 一致性哈希是创建虚拟节点来实现节点宕机后的数据转移并保证数据的安全性和集群的可用性的。redis cluster是采用master节点有多个slave节点机制来保证数据的完整性的,master节点写入数据,slave节点同步数据。当master节点挂机后,slave节点会通过选举机制选举出一个节点变成master节点,实现高可用。但是这里有一点需要考虑,如果master节点存在热点缓存,某一个时刻某个key的访问急剧增高,这时该mater节点可能操劳过度而死,随后从节点选举为主节点后,同样宕机,一次类推,造成缓存雪崩。