一、一致性Hash算法的作用
- 如redis数据分片,hash(key)%N,落到某个节点上,当增加或减少节点个数导致数据缓存的位置都是错误的,使得请求大量直到数据库,造成缓存雪崩。一致性Hash算法就是为了解决这个问题
二、一致性Hash算法
- 从0开始顺时针递增,2^32 -1为结尾形成一个hash环,机器通过hash然后对2^32 取模,落在环上,数据的hash也对2^32次取模落在hash环上,顺时针遇到的第一个机器,那么数据就存储在该机器上,这样增加或减少机器时,只会影响部分数据。
三、一致性Hash算法存在的问题
- 问题:可能会产生数据倾斜,机器节点在hash环上分布不均匀,导致数据都落在一个节点上。
- 解决方法:引入虚拟节点,对机器节点做多次hash使其均匀的分布在hash环上