让你描述一致性hash算法
前言
此处是在了解了一致性hash算法后,用自己的语言来描述下
简述
一致性hash最初是用来解决分布式缓存中节点查找问题,由于缓存是多节点部署的,这些节点都存储了
不同的数据(每个节点可以是主备部署,实时同步),那我们在取数据的时候怎么取,通过hash算法可以定位到一个缓存节点,但是,当一个节点挂掉或者新增一个几点,节点的位置序号发生变动时,普通hash算法的定位就不准确了
于是一致性hash算法营运而生
将主机(ip或者主机名等唯一标识)按一致性hash算法分布在0 — 223-1的闭环圆圈上,当我们取某个值的时候,将这个数据的key用相同的hash算法映射到0 — 223-1上,从这个位置顺时针找到的第一个缓存节点,就是这个数据存储位置
特点
数据容错性和可扩展性 :当我们删除或新增其中一个节点,影响的只是这个节点之前的数据,其他节点并未受影响
数据倾斜问题解决:几个缓存节点在圆上的分布可能并不是对称的,但我们可以增加虚拟的对称节点来解决