redis 集羣數據結構

1. 問題

1) redis 集羣的數據結構是怎樣的?

2.  節點狀態clusterNode結構

clusterNode表示一個節點的當前狀態

 

redis集羣使用clusterNode結構來保存集羣中某個節點的狀態,包括

1) 節點的名字 (40位16進制字符串)

2) 節點的創建時間

3) 節點對應集羣當前的紀元 

4) 節點的IP和端口

5) 節點的狀態 (下線或在線)

6)  clusterLink 保存連接節點所需的相關信息

2.1 .每個clusterNode結構都有一個clusterLink

clusterLink包括

1) 套接字描述符 (Tcp)

2) 輸出緩衝區   (保存等待發送給其他節點的信息)

3) 輸入緩衝區  (保存從其他節點接受到的消息)

4) 與這個連接相關聯的節點 

5)   連接創建的時間

2.2 redisClient結構和clusterLink結構的區別

 前者用於客戶端連接服務端,後者用於連接節點

 

3  集羣狀態clusterState結構

 

clusterState記錄集羣的狀態,比如集羣包含多少節點,集羣紀元,集羣處於上線還是下線

typedef struct clusterState {

   clusterNode *myself  // 指向當前節點的指針

  unit64_t_currentEpoch;  //集羣的紀元

   int  state  集羣處於在線還是下線

   int size   集羣中至少處理一個槽位的節點的數量

  // 集羣節點名單,包括自身

   dict *node 鍵爲節點的名稱,值爲節點對應的clusterNode結構

}

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