redis cluster集群架构详解(十一)- 数据迁移

5.4. 数据迁移

当槽x从Node A向Node B迁移时,Node A和Node B都会有这个槽x,Node A上槽x的状态设置为MIGRATING,Node B上槽x的状态被设置为IMPORTING。

在这里插入图片描述

MIGRATING状态:

1、如果key存在则成功处理。

2、如果key不存在,则返回客户端ASK,客户端根据ASK首先发送ASKING命令到目标节点,然后发送请求的命令到目标节点

3、当key包含多个命令

 a)如果都存在则成功处理

 b)如果都不存在,则返回客户端ASK

 c)如果一部分存在,则返回客户端TRYAGAIN,通知客户端稍后重试,这样当所有的key都迁移完毕的时候客户端重试请求的时候回得到ASK,然后经过一次重定向就可以获取这批键

4、此时不刷新客户端中node的映射关系。

IMPORTING状态

1、如果key不在该节点上,会被MOVED重定向,刷新客户端中node的映射关系

2、如果是ASKING命令则命令会被执行,key不在迁移的节点已经被迁移到目标的节点

3、Key不存在则新建

5.4.1. 读写请求

槽里面的key1还未迁移,并且槽属于迁移中。假如key1属于槽x,并且key1还在Node MPORTING。

扫描二维码关注公众号,回复: 9824837 查看本文章

在这里插入图片描述

5.4.2. MOVED请求

槽里面的key1已经迁移过去,并且槽属于迁移完。假如key1属于槽x,并且key1不在Node A,而且槽x已经迁移到Node 7003

在这里插入图片描述

5.4.3. ASK请求

槽里面的key1已经迁移完,并且槽属于迁移中。假如key1属于槽x,并且key1不在Node A,而且槽x还是MIGRATING状态

在这里插入图片描述

发布了155 篇原创文章 · 获赞 23 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/makyan/article/details/104798619