當前位置:編程學習大全網 - 源碼下載 - 「故障演練」 Redis Cluster集群,當master宕機,主從切換

「故障演練」 Redis Cluster集群,當master宕機,主從切換

性能不夠,緩存來湊

壹個高並發系統肯定少不了緩存的身影,為了保證緩存服務的高可用,我們通常采用 Redis Cluster 集群模式。

描述:

集群部署采用了 3主3從 拓撲結構, 數據讀寫 訪問master節點, slave節點負責備份。

隨便登錄壹臺 redis 節點,都可以看到集群的slot的槽位分步區間,以及對應的主從節點映射關系。

人為模擬,master-1 機器意外宕機

此時,Redis Cluster 集群能自動感知,並自動完成主備切換,對應的slave會被選舉為新的master節點

看下 redis cluster 集群最新的主從關系

看似也沒什麽問題,壹切正常

此時 Spring Boot 應用依然在線服務,當我們再嘗試操作緩存時,會報錯

問題邊界還是非常清晰的。

Redis Cluster 集群已經完成了切換。

但是 Spring Boot 客戶端 沒有動態感知到 Redis Cluster 的最新集群信息

原因分析:

SpringBoot 2.X 版本, Redis默認的連接池采用 Lettuce

當Redis 集群節點發生變化後,Letture默認是不會刷新節點拓撲

解決方案:

將 Letture 二方包仲裁掉

然後,引入 Jedis 相關二方包

編譯代碼,並重新啟動 SpringBoot 微服務,萬事俱備,只欠再次驗證

重新模擬將 127.0.0.1:8001 master 節點宕機,看看系統的日誌

從打印的日誌來看,客戶端已經感知到了 主備切換 ,並與最新的主節點 127.0.0.1:8004 初始化了 24 個連接。

然後,回歸業務功能, 讀寫緩存 數據也都是操作最新的主節點。

還有壹種方案: 刷新節點拓撲視圖

Lettuce 官方描述:

解決方案:

編寫代碼

  • 上一篇:妳有給自己定過KPI(關鍵績效指標)嗎?
  • 下一篇:python操作excel方法?
  • copyright 2024編程學習大全網