回覆列表
  • 1 # IT全棧工程師

    回答這個問題,要先說說關於redis叢集:

    什麼是redis叢集?

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

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

    叢集的容錯功能是透過使用主節點(master)和從節點(slave)兩種角色(role)的節點(node)來實現的,主節點和從節點使用完全相同的伺服器實現, 它們的功能(functionally)也完全一樣, 但從節點通常僅用於替換失效的主節點。

    個主節點可以有任意多個從節點, 這些從節點用於在主節點發生網路斷線或者節點失效時, 對主節點進行替換。

    redis叢集節點是如何通訊的?

    redi叢集中的節點需要做一下工作:

    持有鍵值對資料

    記錄叢集狀態,將鍵對映到對應的節點

    檢測發現其他節點,識別異常節點,在從節點中選舉主節點

    節點之間使用 Gossip 協議 來進行以下工作:

    傳播(propagate)關於叢集的資訊,以此來發現新的節點

    向其他節點發送 PING 資料包,以此來檢查目標節點是否正常運作(相當於命令列的ping命令)

    在特定事件發生時,傳送叢集資訊

    叢集節點的屬性

    每個節點在叢集中都有一個獨一無二的ID ,該ID是一個十六進位制表示的160位隨機數,在節點第一次啟動時由 /dev/urandom 生成。

    節點 ID 用於標識叢集中的每個節點。 一個節點可以改變它的IP和埠號, 而不改變節點 ID 。 叢集可以自動識別出 IP/埠號的變化, 並將這一資訊透過 Gossip 協議廣播給其他節點知道。

    到這裡其實已經解答了這個問題,但是,主從節點切換不併不是簡單的用從節點替換原來的主節點。那麼問題來了,redis在什麼情況下才會導致主從切換,為什麼會發生主從切換,新的主節點有什麼如何產生的,主從節點之間的切換會導致什麼樣的問題等等,都需要我們去探討學習。

  • 中秋節和大豐收的關聯?
  • 暗戀對方能感覺到嗎?