Redis主復(fù)制集原理, redis-sentinel

Redis主復(fù)制集(master-replicaset)

第一次開啟: 
從服務(wù)器向主服務(wù)器發(fā)送 SYNC 命令。
接到 SYNC 命令的主服務(wù)器會(huì)調(diào)用BGSAVE 命令,創(chuàng)建一個(gè) RDB 文件(類似于快照),并使用緩沖區(qū)記錄接下來執(zhí)行的所有寫命令。
當(dāng)主服務(wù)器執(zhí)行完 BGSAVE 命令時(shí),它會(huì)向從服務(wù)器發(fā)送 RDB 文件,而從服務(wù)器則會(huì)接收并載入這個(gè)文件。
以后主服務(wù)器每次寫入文件,都會(huì)記錄到緩沖區(qū),通過廣播形式發(fā)送給從服務(wù)器
主服務(wù)器將緩沖區(qū)儲(chǔ)存的所有寫命令(廣播形式)發(fā)送給從服務(wù)器執(zhí)行。

網(wǎng)絡(luò)斷開了一會(huì)兒后
以前的版本: 從服務(wù)器認(rèn)為數(shù)據(jù)跟不上了, 會(huì)重新發(fā)送SYNC命令, 將主服務(wù)器的全部數(shù)據(jù)保存一次
    若本來有十萬鍵值對(duì), 而斷網(wǎng)期間只寫了幾條鍵值對(duì), 這樣就非常浪費(fèi)時(shí)間
現(xiàn)在的版本: 
    重新執(zhí)行的是PSYNC命令, 只獲取缺失的部分?jǐn)?shù)據(jù)


復(fù)制安全性提升 
因?yàn)樽x寫分離, 寫是主庫(kù), 讀是從庫(kù), 當(dāng)客戶端發(fā)送寫的請(qǐng)求寫入主庫(kù),返回了寫入成功, 而主庫(kù)還未來得及同步如從庫(kù), 客戶端再次去查的時(shí)候發(fā)現(xiàn)查不到

解決:
通過以下兩個(gè)參數(shù)
min-slaves-to-write 指定最少要幾個(gè)從庫(kù)寫入成功
min-slaves-max-lag  指定從庫(kù)與主庫(kù)的最大延遲
在最大延遲時(shí)間內(nèi)在指定個(gè)數(shù)的從庫(kù)上寫入成功了才會(huì)返回給客戶端成功, 否則寫操作不會(huì)被執(zhí)行,返回失敗

基于redis-sentinel實(shí)現(xiàn)自愈

  1. 監(jiān)控
  2. 自動(dòng)選主,切換
  3. 從庫(kù)指向新主庫(kù)(6381)
  4. 應(yīng)用透明
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容