您好,登錄后才能下訂單哦!
導讀:
Redis官方號稱支持并發11萬讀操作,并發8萬寫操作。由于優異的性能和方便的操作,相信很多人都在項目中都使用了Redis,為了不讓應用過分的依賴 Redis服務,Redis的作用只作為提升應用并發和降低應用響應時間存在,即使Redis出現異常,應用程序也不應該出現提供服務失敗問題,對此拍拍信最近安排了一次全環境的Redis Cluster 宕機演練。
許彬:拍拍信架構負責人。
朱榮松:拍拍信架構開發工程師。
Redis 集群環境:
1. 測試環境:
Redis Cluster 配置 :Redis 3主 3從 一共6個節點。
2. 預發環境:
Redis Cluster 配置 :Redis 3主 3從 一共6個節點。
下面是我們操作的時間線:
第一天
程序運行中關閉任意一臺從節點,測試一天均無異常。
第二天
程序運行中關閉任意一臺從節點,程序未發現異常,測試一天未發現異常。
第三天
預發環境有應用發版,出現異常程序無法啟動。
……
1. 測試與預發環境目前關閉的都是任意一臺Redis從節點。
2. 測試環境經過反復測試無問題才開始關閉預發環境節點。
3. 預發環境重啟被關閉的Redis節點后異常消失。
4. 連接Redis客戶端使用的是Java語言中使用范圍較廣的Jedis。
那么為什么測試環境在經過反復測試沒有問題,到預發環境會出現問題?
分析問題前先簡單解釋下Redis Cluster實現原理。簡單來說Redis 場景 操作(多節點均同時操作) Redis寫總量 Redis讀總量 錯誤量 總耗時(s) 錯誤率 程序運行中 關主(關任一主) 100000 100000 3084 100 0.031 關主(關任一主) 100000 100000 1482 102 0.015 關主(關任一主) 100000 100000 3053 97.6 0.031 關從(關任一從) 100000 100000 0 109.2 0 關從(關任一從) 100000 100000 0 90.1 0 關從(關任一從) 100000 100000 0 88.9 0 主從一起關(關任一對) 100000 100000 32613 210.1 0.326 主從一起關(關任一對) 100000 100000 29148 169.8 0.291 主從一起關(關任一對) 100000 100000 32410 173.7 0.324 所有主全關 100000 100000 100000 353.4 1 所有從全關 100000 100000 0 87.7 0 只留一臺主 100000 100000 100000 357.1 1 表1 從測試結果看,集群Master的選舉過程是由Master參與選舉的。 1. 如果半數以上 Master 處于關閉狀態那么整個集群處于不可用狀態。 2. 關閉任意一對主從節點會導致部分(大約為整個集群的1/3)失敗。 3. 關閉任意一主,會導致部分寫操作失敗,是由于從節點不能執行寫操作,在Slave升級為Master期間會有少量的失敗。 4. 關閉從節點對于整個集群沒有影響
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。