Stories

Detail Return Return

藍易雲cdn:Redis是如何保證高可用的? - Stories Detail

Redis的高可用架構是其在生產環境穩定運行的核心能力之一。它通過多層機制(主從複製、哨兵監控、Cluster集羣)實現故障自動轉移與數據冗餘,從而保障系統在節點宕機、網絡異常或硬件故障時依然能持續服務。下面從機制原理、核心命令解釋、以及工作流程三個角度系統分析。⚙️


一、核心機制解析

機制名稱 核心作用 高可用特性 典型應用場景
<font color="red">主從複製(Replication)</font> 從節點實時同步主節點數據 提供數據冗餘,防止單點故障 基礎HA架構,讀寫分離
<font color="red">哨兵模式(Sentinel)</font> 自動監控主節點健康狀態 主節點故障自動切換,選舉新主 單主多從結構下常用
<font color="red">Redis Cluster</font> 數據分片存儲,多節點協調 水平擴展能力,自動遷移Slot 分佈式大規模部署

二、主從複製原理詳解 🧩

Redis的複製是異步機制,即主節點寫入成功後,通過異步通道將數據同步到從節點。
主要命令如下:

# 設置當前節點為從節點
replicaof <master_ip> <master_port>
# Redis 5.0 以前為 slaveof <master_ip> <master_port>

原理説明:

  1. 第一次複製時,從節點執行PSYNC命令,全量同步主節點RDB快照。
  2. 之後主節點將命令流(增量數據)寫入複製緩衝區,並實時推送給從節點。
  3. 若從節點斷開連接,Redis通過offset偏移量自動實現增量同步,無需全量恢復。

優勢:

  • 數據在主從間保持幾乎一致;
  • 從節點可讀,提高系統吞吐量;
  • 主節點崩潰後,可手動或自動提升從節點。

三、哨兵(Sentinel)機制 🔁

哨兵是獨立的監控進程,負責自動故障檢測與主從切換

配置示例:

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000

配置解釋:

  • mymaster:主節點名稱;
  • 2:最少需2個哨兵確認主節點下線;
  • down-after-milliseconds:超時未響應即視為下線;
  • failover-timeout:故障轉移超時時間。

工作流程説明圖(vditor格式)

Redis高可用機制
  主從複製
    異步同步
    全量與增量複製
  哨兵Sentinel
    主觀下線
    客觀下線
    選舉新主
  Cluster集羣
    分槽Slot機制
    Gossip心跳檢測
    自動遷移Slot

Sentinel核心機制:

  1. 每個哨兵定期向主節點發送PING;
  2. 若多個哨兵認為主節點“客觀下線”,即觸發選舉;
  3. 被選中的哨兵執行failover命令,將某個從節點提升為主;
  4. 其餘從節點自動指向新主節點;
  5. 客户端通過哨兵自動感知主節點變化。

四、Redis Cluster架構 ⚡

Redis Cluster是真正的分佈式高可用架構,其核心是數據分片與多主多從容災機制

  • 數據分片(Slot機制)
    Redis Cluster將整個數據空間分為 16384個槽(slot),每個主節點負責一部分槽,從節點鏡像該部分數據。

    # 查看當前節點負責的slot範圍
    redis-cli -c cluster slots
  • 故障轉移
    當主節點故障,從節點自動升級為主節點並接管其槽位;
    客户端通過Gossip協議自動更新拓撲關係。

對比説明表:

特性 主從複製 Sentinel哨兵 Redis Cluster
數據分佈 全量相同 全量相同 分片存儲
自動切換
擴展能力 中等 中等 極強
客户端直連 主節點 通過哨兵發現 自動路由Slot
常見場景 讀多寫少 中小型集羣 分佈式業務

五、企業級高可用實踐建議 💼

  1. 至少三台Sentinel節點,避免腦裂;
  2. 開啓AOF持久化,並與RDB混合寫入,提高數據安全;
  3. 異地多機部署,防止機房級故障;
  4. 使用keepalive機制保障客户端連接穩定;
  5. 監控指標(延遲、複製偏移、failover次數)接入Prometheus告警。

六、總結

Redis通過 <font color="red">複製、哨兵、Cluster</font> 三重機制實現了從節點級冗餘 → 故障自動切換 → 分佈式水平擴展的高可用體系。
其核心目標是——任何單點故障都不應影響服務連續性

高可用不是單一功能,而是複製、監控、選舉、切換、恢復的全鏈路閉環。
企業若要追求99.99%的可用性,建議將Redis部署在多AZ(可用區)架構中,並結合持久化與備份機制形成真正意義上的容災體系

user avatar tech Avatar shenchendexiaoyanyao Avatar baqideyaling Avatar sorra Avatar sulf Avatar zijie1024 Avatar
Favorites 6 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.