数据分区问题

数据集被分散到多个节点,有利用水平扩展,提高吞吐,因此有一系列的算法用于做数据分区,这些算法各有自己的优缺点。

一致性哈希是如何工作的?

如下图,可以看到,首先使用hash函数针对node的ip/hostname进行hash,将其分布到hash环上。当客户端获取对应key的数据时,先使用相同的hash函数进行hash,如果发现对应位置没有node,就按照顺时针往下寻找,直到找到一个有效的node,然后从node中查询对应的key,如果没有查询到就miss了。

Untitled

任何一个节点移除只会影响这个节点本身,对于其他节点不影响,对于移除节点的访问,都会继续请求这个节点在hash ring中的下一个节点。导致被移除节点上的数据被转移到下一个节点上。

Untitled

对于新增的节点,也不影响hash ring中的其他节点本身,只会导致下一个节点中的部分key会转移到新增的节点上。

Untitled