redis 學習 - 常見架構模式


本篇已收錄至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、數據通過異步復制,不保證數據的強一致性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM