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。

在這裏插入圖片描述

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狀態

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章