相同key请求要落在同一个节点

假设有3台数据库,利用数组可以构建成一个环,三台机器均匀的落在一个环上

算法-一致性hash_添加节点

 

 

 

 

 请求落在环上的时候 顺时针找到最近的服务,这里有两个问题,

1. 如何保证节点混匀的落在环上

2. 添加或删除节点的时候数据偏移问题如何解决

使用虚拟节点,

A:1000虚拟节点

B:1000虚拟节点

C:1000虚拟节点

hash放到环上,hash会保证节点均匀的落在环上,当添加节点的时候 ABC其中的1000个节点会迁移数据到新的节点

删除节点的时候,会从被删除节点迁移数据到临近的1000个节点中 根据hash的性质会保证每个剩余节点得到大致相当的节点数据