這篇文章帶大家了解一下Redis中的哨兵模式,希望對大家有幫助!
Redis 主從模式,一旦主節點發生故障,可以將從節點升為主節點,同時也要通知客戶端更新主節點位址,這樣一般是不可行的。所以,Redis 提供了 Redis Sentinel
哨兵機制 來解決這個問題。 【相關推薦:Redis影片教學】
psync
。此時如果同步不成功,則會進行全量同步,主函式庫執行全量備份的同時,可能會造成毫秒或秒級的卡頓
Sentinel
節點集合一般來說,每個Sentinel
節點會不斷的對其他Sentinel
節點和Redis
節點發送PING
,透過是否回復來確認是否在線
down-after-milliseconds
毫秒內,Sentinel
沒有收到目標節點的有效回复,則會判定該節點為主觀下線。 Sentinel
節點會透過sentinel is-master-down-by- addr
指令,向其它Sentinel
節點詢問對該節點的狀態判斷。如果超過 <quorum></quorum>
個數的節點判定主節點不可達,則 Sentinel
節點會判斷主節點為客觀下線。 Sentinel
以1次/s
頻率,向其他Sentinel
節點、Redis
主從節點發送PING
指令。 PING
指令超過down-after-milliseconds
,這個實例被Sentinel
標記為主觀下線。 Sentinel
節點,以1次/s
確認此主伺服器是否進入主觀下線狀態<quorum></quorum>
個數的節點判定主節點不可達,則該Sentinel
節點會判斷主節點為客觀下線。 Sentinel
向下線伺服器的所欲伺服器發送INFO
指令,會從10次/s
改為1次/s
。 Sentinel
節點之間協商主節點狀態,如果主節點處於 SDOWN
狀態,則投票自動選出新的 主節點。將剩餘的 從節點 指向 新的主節點 進行 資料複製。 Sentinel
同意主伺服器 下線時,主伺服器 的客觀下線狀態就會被移除。當主伺服器 重新向Sentinel
的PING
指令傳回有效回覆 時,主伺服器 的主觀下線狀態 就會被移除。 Redis 採用主從複製的模式,一旦主節點掛掉,從節點正在同步的資料可能會遺失,延遲越大,丟失的越多。
Redis 提供了兩個設定項來限制主函式庫的請求處理,分別是min-slaves-to-write
和min-slaves-max-lag
。
這兩個組態項目組合後的要求是,主庫連接的從庫中至少有N 個從庫,和主庫進行資料複製時的ACK 訊息延遲不能超過T 秒,否則,主函式庫就不會再接收客戶端的請求了。
所以,Sentine 無法保證訊息完全不遺失,但也能盡量保證訊息少遺失。
Sentinel
解決了高可用,沒有解決主節點單節點擴充的問題。
更多程式相關知識,請造訪:程式設計入門! !
以上是一文了解Redis中的哨兵模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!