1. 程式人生 > >redis cluster 叢集架構

redis cluster 叢集架構

  1. 關於redis cluster 叢集
    redis cluster叢集是分散式的。
    1.1 redis 叢集資料分片(redis cluster data sharding)-雜湊槽的概念
    有M個雜湊槽,每個master會有[0,M]個雜湊槽slots。當若干個master擁有的雜湊槽的集合總數為M時,該redis cluster才能全部讀寫工作正常態。
    1.2 master - slave
    slave是master 的replicas,salve本身不佔雜湊槽slots.一個master可以沒有或有任意個slave,每個master擁有的salve數量是任意的。
    這裡寫圖片描述
    當某個master 掛掉(failover)時候,slave會自動頂替它的master
    這裡寫圖片描述

    如果某個master恰巧沒有slave,掛掉之後,整個redis叢集就都掛掉了這裡寫圖片描述
    1.3 redis 叢集的一致性。
    redis叢集是不保證嚴格一致性(strong consistency)的,即總是存在某個write,返回成功,而實際沒有成功的概率的。因為redis 使用的是非同步複製(asynchronous)
    同步複製與非同步複製
    你可以使用wait,實現同步複製(synchronous),這會減少write失敗的概率,但是對效能就降低了。即使這樣也不能保證嚴格一致性(strong consistency).因為總存在某個情況備份時候,一個slave沒有收到master 的write同步,卻被選舉為master。(it is always possible under more complex failure scenarios that a slave that was not able to receive the write is elected as master).
    例如當正好有個write command傳入給master A,A儲存後迴應客戶端OK(還來不及slave同步),極短的時間內該master down,它的一個slave 被選舉為master,但是該new master根本不知道剛剛的write command的事情。
    redis slave被選為master

2.關於redis cluster 操作大體步驟
redis叢集