Redis的存儲(chǔ)很好用仗阅,用起來(lái)簡(jiǎn)單便斥,性能好,我們經(jīng)常使用它做緩存鹏控,做緩存的時(shí)候我們對(duì)數(shù)據(jù)的安全性和更新的及時(shí)性都要求的比較簡(jiǎn)單致扯,如果我們要把redis當(dāng)成主要存儲(chǔ),我們會(huì)遇到什么問(wèn)題呢当辐?
當(dāng)成主要存儲(chǔ)就一定會(huì)考慮到主從的問(wèn)題抖僵。
上圖就是一個(gè)進(jìn)店的主從架構(gòu)潦牛。
圖中的master 掛掉了狗唉,怎么辦呢?
我們可以從slave中挑出來(lái)一個(gè)擔(dān)當(dāng)主庫(kù)來(lái)承接寫(xiě)業(yè)務(wù)畴栖,將壞掉的主庫(kù)下線。這些動(dòng)作都要手動(dòng)來(lái)操作蹈垢,人為發(fā)現(xiàn)問(wèn)題慷吊,處理問(wèn)題的時(shí)間受很多因素的阻撓,是否可以自動(dòng)的下線故障主庫(kù)曹抬,挑選可用從庫(kù)并上線呢溉瓶?
redis的sentinel機(jī)制就是解決這類(lèi)問(wèn)題的。
這是一個(gè)非常簡(jiǎn)單的哨兵結(jié)構(gòu)谤民,redis的sentinel服務(wù)可以跟redis部署在一起堰酿,也可以單獨(dú)部署,兩者不依賴(lài)张足。
從上圖可以看出來(lái)触创,每個(gè)從庫(kù)上部署了哨兵,master上也部署了哨兵为牍,哨兵和哨兵之間是可以相互通信的哼绑,當(dāng)某一個(gè)哨兵發(fā)現(xiàn)master出現(xiàn)問(wèn)題后,會(huì)使用流言傳遞的算法將信息擴(kuò)散出去吵聪,當(dāng)達(dá)到發(fā)現(xiàn)錯(cuò)誤的哨兵達(dá)到一定數(shù)目時(shí)
- 投票選出 核心哨兵
- 核心哨兵下線主庫(kù)
- 核心哨兵挑選從庫(kù)切換成為主庫(kù)
- 將從故障主庫(kù)切換成從庫(kù)