1. 架构图
2. 哈希分区
2.1 一致性哈希分区
- 每个节点分配token
- 数据读写时,根据key计算hash值,顺时针查找第一个大于等于该哈希值的token
2.2 虚拟槽分区
- 键根据哈希函数映射到槽内。
- 每个节点负责一部分槽以及槽所映射的键值数据
3. 集群添加kv步骤
- key crc16 算出值 % 16384 =>哈希槽
- k-v 放到某个哈希槽
4. 集群投票与容错
4.1 节点失效判断
半数以上节点与其中一个节点通信超时,就认定失效。
4.2 集群失效判断
- 任意master挂掉,且当前master没有slave。
- 半数以上master挂掉。
5. 集群扩容
- 准备新节点
- 加入集群
- 迁移槽和数据
- 槽和数据迁移到6385节点
- 槽和数据迁移到6385节点
- 槽和数据的迁移流程