歡迎您光臨本站 註冊首頁

· redis 哨兵模式雜誌閱讀

Redis的三種模式:主從、哨兵、叢集

admin @ 2020-04-20 reply:0

Redis的三種模式:主從、哨兵、叢集


前言

Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。普遍用於目前主流的分散式架構系統中,關於redis的詳細介紹,見另一篇文章:

redis的安裝與介紹

redis的多機資料庫實現,主要分為以下三種:

  1. Redis哨兵(Sentinel)

  2. Redis複製(主從)

  3. Redis叢集

一、Redis的主從複製

通過執行slaveof命令或設定slaveof選項,讓一個伺服器去複製另一個伺服器的資料。被複制的伺服器稱為:Master主服務;對主伺服器進行複製的伺服器稱為:Slave從伺服器。主資料庫可以進行讀寫操作,當寫操作導致資料變化時會自動將資料同步給從資料庫。而從資料庫一般是隻讀的,並接受主資料庫同步過來的資料。一個主資料庫可以擁有多個從資料庫,而一個從資料庫只能擁有一個主資料庫。

主從複製問題:當master down,需要手動將一臺slave使用slaveof no one提升為master要實現自動,就需要redis哨兵。

實現原理步驟:

  1. 從伺服器向主伺服器傳送SYNC命令

  2. 主伺服器收到SYNC命令後,執行BGSAVE命令,在後臺生成RDB檔案,使用緩衝區記錄從現在開始執行的所有的寫命令。

  3. 當主伺服器的BGSAVE命令執行完畢後,主伺服器後將BGSAVE命令生成的RDB檔案傳送給從伺服器,從伺服器接收並載入這個RDB檔案,將自己的資料庫狀態更新至主伺服器執行BGSAVE命令時的資料庫狀態。

  4. 主伺服器將記錄在緩衝區裡面的所有寫命令傳送給從伺服器,從伺服器執行這些寫命令,將自己的資料庫狀態更新至主伺服器資料庫當前所處的狀態。


redis主從複製


 

二、Redis的哨兵(Sentinel)

為瞭解決Redis的主從複製的不支援高可用效能,Redis實現了Sentinel哨兵機制解決方案。由一個或多個Sentinel去監聽任意多個主服務以及主伺服器下的所有從伺服器,並在被監視的主伺服器進入下線狀態時,自動將下線的主伺服器屬下的某個從伺服器升級為新的主伺服器,然後由新的主伺服器代替已經下線的從伺服器,並且Sentinel可以互相監視。


監視狀態下的主從叢集


主伺服器下線


當有多個Sentinel,在進行監視和轉移主從伺服器時,Sentinel之間會自己首先進行選舉,選出Sentinel的leader來進行執行任務。

三、Redis叢集

叢集是Redis提供的分散式資料庫方案,叢集通過分片來進行資料共享,並提供複製和故障轉移功能。一個Redis叢集通常由多個節點組成;最初,每個節點都是獨立的,需要將獨立的節點連線起來才能形成可工作的叢集。

Cluster Nodes命令和Cluster Meet命令,新增和連線節點形成叢集。

節點握手連線成叢集

 

Redis中的叢集分為主節點和從節點。其中主節點用於處理槽;而從節點用於複製某個主節點,並在被複制的主節點下線時,代替下線的主節點繼續處理命令請求。

[admin via ] Redis的三種模式:主從、哨兵、叢集已經有469次圍觀

http://coctec.com/magazine/show-post-item-93.html