本篇已收錄至redis in action 學習筆記系列
單機版
1、內存容量有限 2、處理能力有限 3、無法高可用。
主從復制版
Redis 的復制(replication)功能允許用戶根據一個 Redis 服務器來創建任意多個該服務器的復制品,其中被復制的服務器為主服務器(master),而通過復制創建出來的服務器復制品則為從服務器(slave)。 只要主從服務器之間的網絡連接正常,主從服務器兩者會具有相同的數據,主服務器就會一直將發生在自己身上的數據更新同步 給從服務器,從而一直保證主從服務器的數據相同。
優點:
1、master/slave 角色
2、master/slave 數據相同
3、降低 master 讀壓力在轉交從庫
缺點:
-
無法保證高可用
-
沒有解決 master 寫的壓力
哨兵模式
Redis sentinel 是一個分布式系統中監控 redis 主從服務器,並在主服務器下線時自動進行故障轉移。其中三個特性:
-
監控(Monitoring): Sentinel 會不斷地檢查你的主服務器和從服務器是否運作正常。
-
提醒(Notification): 當被監控的某個 Redis 服務器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程序發送通知。
-
自動故障遷移(Automatic failover): 當一個主服務器不能正常工作時, Sentinel 會開始一次自動故障遷移操作。
優點:
-
保證高可用
-
監控各個節點
-
自動故障遷移
缺點:
-
主從模式,切換需要時間丟數據
-
沒有解決 master 寫的壓力
集群(proxy 型):
Twemproxy 是一個 Twitter 開源的一個 redis 和 memcache 快速/輕量級代理服務器; Twemproxy 是一個快速的單線程代理程序,支持 Memcached ASCII 協議和 redis 協議。
特點:1、多種 hash 算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkins
2、支持失敗節點自動刪除
3、后端 Sharding 分片邏輯對業務透明,業務方的讀寫方式和操作單個 Redis 一致
缺點:增加了新的 proxy,需要維護其高可用。
集群(直連型):
從redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用無中心結構,每個節點保存數據和整個集群狀態,每個節點都和其他所有節點連接。
特點:
1、無中心架構(不存在哪個節點影響性能瓶頸),少了 proxy 層。
2、數據按照 slot 存儲分布在多個節點,節點間數據共享,可動態調整數據分布。
3、可擴展性,可 線性擴展到 1000 個節點,節點可動態添加或刪除。
4、高可用性,部分節點不可用時,集群仍可用。通過增加 Slave 做備份數據副本
5、實現故障自動 failover,節點之間通過 gossip 協議交換狀態信息,用投票機制完成 Slave 到 Master 的角色提升。
缺點:
1、資源隔離性較差,容易出現相互影響的情況。
2、數據通過異步復制,不保證數據的強一致性