iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
Software Development

Redis還在學系列 第 26

Day26 Redis架構實戰-Redis叢集架構/Gossip協議

Redis叢集架構目標情境

  • 高效能與可依照效能需求線性擴增節點達到1000個
    • 最少3個Master,不需要使用代理去做導向連線和資料合併,使用非同步的方式進行資料集複製.
  • 操作安全性
    • Redis透過叢集非同步複製資料集機制盡可能的在大多數的Master上保留所有從用戶端寫入的資料,只有極小可能發生資料遺失.
  • 可用性
    • 每個Master可有一個以上的Replica,提供類似Sentinel的失效切換機制 (非Sentinel).
# Redis叢集配置
                          client
                            |
                            V
--------------------------------------------------------------
       Redis               Redis               Redis
     (Master)            (Master)            (Master)
    |        |           |       |           |       |
    V        V           V       V           V       V
  Redis    Redis       Redis    Redis       Redis    Redis
(Replica) (Replica)  (Replica) (Replica)  (Replica) (Replica)
--------------------------------------------------------------
示意   1/3 Data            1/3 Data             1/3 Data                
  • 可縮放性

    • Scale Up 垂直擴充
      • 單台Server擴充其CPU/RAM 相關硬體資源.
    • Scale Out 水平擴充
      • 擴充多台的Server.
  • Gossip協議

    • 分散式一致性協議
      • 無中心化,用以實現分散式與彈性擴充.
      • 失效切換,用以實現高可用性.
    • Gossip訊息
      • Meet -- 通知各節點有新節點加入.
      • Ping -- 每個節點與其它結點間的Heartbeat機制,用於確認其它節點是否還在線上服務,同時也可以用來交換資訊.
      • Pong -- 當節點收到Meet或Ping時進行回應的訊息,還可以用來更新節點狀態.
      • Fail -- 當其它節點收到Fail訊息後,會立刻將這個節點更新為離線狀態,接下來會進行失效切換.
    • 每個節點各自保存與維護一份自己視角所得到的Redis叢集狀態
      • 目前叢集狀態.
      • 每個節點所管理的Slot與資料遷移裝態.
      • 每個節點的Master/Replica狀態.
      • 每個節點的生存狀態與Fail狀態.

上一篇
Day25 Redis架構實戰-Sentinel選取Replica機制
下一篇
Day27 Redis架構實戰-Redis叢集Slot分流機制
系列文
Redis還在學30

尚未有邦友留言

立即登入留言