Redis高可用演進
來自: http://www.cnblogs.com/chenty/p/5152878.html
最近整理Redis,對sentinel有了更深入的理解,特地總結如下
1.主從Redis
主從redis實際上是一種主備模式,即主redis宕機后,可以切換從redis繼續提供服務。
缺點:
1.人為關注Master是否宕機
2.無法完成自動切換主從
3.從節點的功能未被充分利用
主從模式:
2.sentinel
為了解決上述確定,Redis官方提供了sentinel,保證redis的高可用性
圖1展示的是sentinel與redis的關系,即sentinel系統對每個redis實例(主、從)均創建兩個鏈接:命令連接、訂閱連接
命令連接:發送INFO命令,與redis保持通信
訂閱連接:通過訂閱連接,自動發現其他sentinel實例
圖2展示一個最小規模的sentinel,即至少由三個sentinel實例組成,當被監視的redis被判斷為主管下線時,需要從sentinel中選舉零頭sentinel來進行主從切換
優點:
1.sentienl可以監控主從節點的健康狀況,降低了人為監控成本
2.sentinel可以完成主從切換
缺點:
1.從節點依然未被充分利用
2.無法做到橫向擴展,提供服務器的只有一個master
sentinel模式:
圖1
圖2
3.分片
分片思想主要是利用一致性哈希算法,完成redis的橫向擴展
1.通過zookeeper存儲sentinel的配置信息
2.在客戶端實現一致性哈希算法,通過路由算法決定redis命令由那個redis實例進行執行
3.通過增加shard,來分擔單個shard的壓力
缺點:
1.擴容時涉及到數據遷移,如果redis中只是緩存數據則方便處理,但如果有業務數據強依賴redis,則遷移時只能停機處理
2.無法解決冷熱數據問題
分片模式:
下節重點:
JedisClient客戶單的實現原理
</div>