天天看點

redis叢集相關資料Cluster簡介 目前支援的叢集特性redis cluster 架構redis-cluster選舉:容錯參考

        redis 3.0引入的cluster。cluster是具有有自動資料分片、容錯、針對讀取速度有了顯著的提升、改進了aof重寫等的redis分布式實作。

    redis 叢集是一個分布式(distributed)、容錯(fault-tolerant)的 redis 實作, 叢集可以使用的功能是普通單機 redis 所能使用的功能的一個子集(subset)。

    redis 叢集中不存在中心(central)節點或者代理(proxy)節點, 叢集的其中一個主要設計目标是達到線性可擴充性(linear scalability)。

    redis 叢集為了保證一緻性(consistency)而犧牲了一部分容錯性: 系統會在保證對網絡斷線(net split)和節點失效(node failure)具有有限(limited)抵抗力的前提下, 盡可能地保持資料的一緻性。

節點自動發現

slave->master 選舉,叢集容錯

hot resharding:線上分片

叢集管理

基于配置(nodes-port.conf)的叢集管理

ask 轉向/moved 轉向機制.

redis叢集相關資料Cluster簡介 目前支援的叢集特性redis cluster 架構redis-cluster選舉:容錯參考

架構細節:

(1)所有的redis節點彼此互聯(ping-pong機制),内部使用二進制協定優化傳輸速度和帶寬.

(2)節點的fail是通過叢集中超過半數的節點檢測失效時才生效.

(3)用戶端與redis節點直連,不需要中間proxy層.用戶端不需要連接配接叢集所有節點,連接配接叢集中任何一個可用節點即可

(4)redis-cluster把所有的實體節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value

redis叢集相關資料Cluster簡介 目前支援的叢集特性redis cluster 架構redis-cluster選舉:容錯參考

(1)選舉過程是叢集中所有master參與,如果半數以上master節點與master節點通信逾時(cluster-node-timeout),認為目前master節點挂掉.

(2):什麼時候整個叢集不可用(cluster_state:fail)? 

    a:如果叢集任意master挂掉,且目前master沒有slave.叢集進入fail狀态,也可以了解成叢集的slot映射[0-16383]不完成時進入fail狀态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage參數,預設關閉,打開叢集相容部分失敗.

    b:如果叢集超過半數以上master挂掉,無論是否有slave叢集進入fail狀态.

  ps:當叢集不可用時,所有對叢集的操作做都不可用,收到((error) clusterdown the cluster is down)錯誤

http://redisdoc.com/

繼續閱讀