这种hash方法跟使用mod的区别,就是能保证:
- 上线节点的时候,只需要把一些数据搬到新节点,其他节点之间没有数据迁移
- 下线/宕机的时候,只需要把这个节点上的数据搬出,其他节点之间没有数据迁移
但是,不加vnode的话,不能保证均匀,即:
- 不同节点承载的数据量可能差别巨大
- 上线一个节点的时候,所有数据都来自另外的同一个节点
- 下线/宕机的时候,所有数据都跑到另外的同一个节点上了
加上 vnode 之后:
- 不同节点承载数据量差不多
- 上线节点的时候,数据来自多个节点,且其他节点之间没有数据迁移
- 下线/宕机的时候,数据转移到多个节点,且其他节点之间没有数据迁移