相同key请求要落在同一个节点
假设有3台数据库,利用数组可以构建成一个环,三台机器均匀的落在一个环上
请求落在环上的时候 顺时针找到最近的服务,这里有两个问题,
1. 如何保证节点混匀的落在环上
2. 添加或删除节点的时候数据偏移问题如何解决
使用虚拟节点,
A:1000虚拟节点
B:1000虚拟节点
C:1000虚拟节点
hash放到环上,hash会保证节点均匀的落在环上,当添加节点的时候 ABC其中的1000个节点会迁移数据到新的节点
删除节点的时候,会从被删除节点迁移数据到临近的1000个节点中 根据hash的性质会保证每个剩余节点得到大致相当的节点数据