哨兵模式坯墨,英文名稱Sentinel。
Sentinel存在的目的就是解決master宕機(jī)后的可用性問(wèn)題病往。Sentinel集群類似于zookeeper捣染,集群之間的交互如下圖:
Sentinel主要負(fù)責(zé)監(jiān)控主從節(jié)點(diǎn)的監(jiān)控停巷,當(dāng)主節(jié)點(diǎn)掛掉后耍攘,自動(dòng)選擇一個(gè)從節(jié)點(diǎn)切換為主節(jié)點(diǎn)榕栏。
下面梳理下客戶端連接的過(guò)程:
* 先連接sentinel,查詢主節(jié)點(diǎn)的地址蕾各。
* 連接主節(jié)點(diǎn)扒磁,進(jìn)行數(shù)據(jù)交互。
當(dāng)主節(jié)點(diǎn)掛了后式曲,客戶端會(huì)重新向sentinel要地址妨托,sentinel會(huì)將最新的master地址反饋給客戶端。這樣故障發(fā)生時(shí)吝羞,程序無(wú)需重啟即可自動(dòng)完成節(jié)點(diǎn)切換兰伤。
切換過(guò)程中,如果主從延遲特別大钧排,會(huì)遇到消息丟失的問(wèn)題敦腔。未及時(shí)同步的消息必然會(huì)丟失。Sentinel也無(wú)法保證消息完全不丟失恨溜,它有2個(gè)配置符衔,可以盡量保證消息少丟失。
min-slaves-to-wirte 1
min-slaves-max-lag 10
第一個(gè)參數(shù)表示主節(jié)點(diǎn)必須至少有一個(gè)從節(jié)點(diǎn)在正常進(jìn)行復(fù)制筒捺,不然會(huì)停止對(duì)外寫服務(wù)柏腻,喪失可用性,但是不保證復(fù)制完成系吭。
第二個(gè)參數(shù)是用來(lái)判斷復(fù)制是否正常五嫂,單位是s,表示如果10s內(nèi)沒(méi)收到從節(jié)點(diǎn)反饋肯尺,那么從節(jié)點(diǎn)的同步不正常沃缘。
Sentinel默認(rèn)端口26379.進(jìn)行主從切換的方式有 主動(dòng)、被動(dòng)兩種则吟。