Redis Cluster集群原理

2022-05-19 13:45:13 字數 1235 閱讀 2046

一、redis-cluster

官方推薦的 redis 集群解決方案,優點在於去中心化, 去中介軟體,也就是說,集群中的每個節點都是平等的關係,都是對等的,每個節點都儲存各自的資料和整個集群的狀態。每個節點都和其他所有節點連線,而且這些連線保持活躍,這樣就保證了我們只需要連線集群中的任意乙個節點,就可以獲取到其他節點的資料。理論上最大可以有 16384 個節點,效能隨著節點的增加而增加。後續可自行增加或者刪除節點,移動槽( slot 一共16384 個槽 )等等。

需要注意的是:必須要3個或以上的主節點,否則在建立集群時會失敗,並且當存活的主節點數小於總節點數的一半時,整個集群就無法提供服務了。

二、redis-cluster 架構圖

1、所有 redis 集群彼此互聯,通過 ping-pong 命令確定彼此的健康狀態,內部使用二進位制協議優化傳輸速度和頻寬。

2、客戶端與 redis 集群連線,不需要中間 proxy 層,客戶端不需要連線集群所有節點,連線集群中任何乙個節點即可。

三、redis-cluster 投票容錯機制

當黃色節點通過 ping-pong 命令,發現紅色節點掛了,就會向其他節點廣播。其他節點通過 ping-pong 命令去檢測紅色節點。當多數節點都 ping 不通紅色節點的時候,該集群系統就會認為紅色節點掛了。紅色節點的備份節點就會自動頂上來。如果沒有備份節點,或者備份節點也都掛了,該集群就掛了。

1、節點的 fail 狀態是通過集群集群中超過半數的節點檢測失效時才生效的。

2、redis-cluster 把所有的物理節點對映到槽( slot )上。

redis 集群中內建了 16384 個雜湊槽,當需要在 redis 集群中放置乙個 key-value 時,redis 先對 key 使用 crc16 演算法算出乙個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應乙個編號在 0-16383 之間的 hash 槽上,redis 會根據節點的數量大致均等的將 hash 槽對映到不同的節點上

redis cluster 集群重啟關閉

找遍了redis cluster官方文件,沒發現有關集群重啟和關閉的方法。為啥會沒有呢,猜測redis cluster至少要三個節點才能執行,三颱同時掛掉的可能性比較小,只要不同時掛掉,掛掉的機器修復後在加入集群,集群都能良好的運作,萬一同時掛掉,資料又沒有備份的話,就有 煩了。redis clus...

Redis Cluster集群故障轉移

1.故障發現 1.1 主觀下線,redis集群通過gossip的ping,pong訊息來互相通訊,比如a節點向b節點傳送ping,如果在 cluster node timeout時間內一直失敗,則節點a會認為b是主觀下線,同時將此狀態資訊在集群內廣播 1.2 客觀下線,當半數以上的持有槽的主節點都標...

Redis Cluster集群快速搭建

想在3分鐘以內搭建乙個redis cluster集群嗎?說3分鐘可能有點久,實際上好像不到一分鐘就完成了redis cluster集群的搭建。redis cluster是官方提供的一種集群方案,redis cluster採用無中心結構,每個節點儲存資料和整個集群狀態,每個節點都和其他所有節點連線。結...