注冊成功
X
W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
- Sentinel 只是一個運行在特殊模式下的 Redis 服務(wù)器, 它使用了和普通模式不同的命令表, 所以 Sentinel 模式能夠使用的命令和普通 Redis 服務(wù)器能夠使用的命令不同。
- Sentinel 會讀入用戶指定的配置文件, 為每個要被監(jiān)視的主服務(wù)器創(chuàng)建相應(yīng)的實例結(jié)構(gòu), 并創(chuàng)建連向主服務(wù)器的命令連接和訂閱連接, 其中命令連接用于向主服務(wù)器發(fā)送命令請求, 而訂閱連接則用于接收指定頻道的消息。
- Sentinel 通過向主服務(wù)器發(fā)送 INFO 命令來獲得主服務(wù)器屬下所有從服務(wù)器的地址信息, 并為這些從服務(wù)器創(chuàng)建相應(yīng)的實例結(jié)構(gòu), 以及連向這些從服務(wù)器的命令連接和訂閱連接。
- 在一般情況下, Sentinel 以每十秒一次的頻率向被監(jiān)視的主服務(wù)器和從服務(wù)器發(fā)送 INFO 命令, 當(dāng)主服務(wù)器處于下線狀態(tài), 或者 Sentinel 正在對主服務(wù)器進行故障轉(zhuǎn)移操作時, Sentinel 向從服務(wù)器發(fā)送 INFO 命令的頻率會改為每秒一次。
- 對于監(jiān)視同一個主服務(wù)器和從服務(wù)器的多個 Sentinel 來說, 它們會以每兩秒一次的頻率, 通過向被監(jiān)視服務(wù)器的
__sentinel__:hello
頻道發(fā)送消息來向其他 Sentinel 宣告自己的存在。
- 每個 Sentinel 也會從
__sentinel__:hello
頻道中接收其他 Sentinel 發(fā)來的信息, 并根據(jù)這些信息為其他 Sentinel 創(chuàng)建相應(yīng)的實例結(jié)構(gòu), 以及命令連接。
- Sentinel 只會與主服務(wù)器和從服務(wù)器創(chuàng)建命令連接和訂閱連接, Sentinel 與 Sentinel 之間則只創(chuàng)建命令連接。
- Sentinel 以每秒一次的頻率向?qū)嵗òㄖ鞣?wù)器、從服務(wù)器、其他 Sentinel)發(fā)送 PING 命令, 并根據(jù)實例對 PING 命令的回復(fù)來判斷實例是否在線: 當(dāng)一個實例在指定的時長中連續(xù)向 Sentinel 發(fā)送無效回復(fù)時, Sentinel 會將這個實例判斷為主觀下線。
- 當(dāng) Sentinel 將一個主服務(wù)器判斷為主觀下線時, 它會向同樣監(jiān)視這個主服務(wù)器的其他 Sentinel 進行詢問, 看它們是否同意這個主服務(wù)器已經(jīng)進入主觀下線狀態(tài)。
- 當(dāng) Sentinel 收集到足夠多的主觀下線投票之后, 它會將主服務(wù)器判斷為客觀下線, 并發(fā)起一次針對主服務(wù)器的故障轉(zhuǎn)移操作。
以上內(nèi)容是否對您有幫助:
更多建議: