《redis in action》reids復(fù)制鏈寫點筆記關(guān)注共 1061字,需瀏覽 3分鐘 ·2021-04-13 05:21 上次文章中我們說到了redis復(fù)制的問題,大概得過程就是從節(jié)點會在啟動的時候建立與主節(jié)點的通信,然后主節(jié)點將數(shù)據(jù)通過網(wǎng)絡(luò)發(fā)送到從節(jié)點。但是考慮到數(shù)據(jù)拷貝是通過網(wǎng)絡(luò)進(jìn)行的,因此網(wǎng)絡(luò)是一個潛在的瓶頸。除此之外從節(jié)點也可以擁有從節(jié)點,所以我們的數(shù)據(jù)復(fù)制貌似還挺復(fù)雜的,最終就會形成一個主從鏈。考慮到上述我們說的redis復(fù)制鏈來說,如果有master、slavex、slavey的復(fù)制鏈。其關(guān)系如下:那么當(dāng)slavex復(fù)制master的命令的時候,slavey將不會與slavex建立數(shù)據(jù)同步連接,最終slavey將嘗試重新建立鏈接,只有鏈接建立成功之后才會將slavex的數(shù)據(jù)同步到slavey。也就是數(shù)據(jù)是從master節(jié)點不斷的向下進(jìn)行廣播式的傳遞的。但是考慮到有時候讀多寫少,而且負(fù)載的壓力很大,那么單機就沒有辦法處理了,因此我們在master下邊掛很多個從節(jié)點,讓我們的從節(jié)點去分擔(dān)讀的壓力,但是隨著負(fù)載的逐步加大,寫入的速度會隨著從節(jié)點的變多而變慢,因此一個master節(jié)點不能無限制的添加從節(jié)點,為了解決這種寫入慢的問題就可以通過添加一層中間層來解決,如下圖所示:當(dāng)然為了解決上述的寫入和讀取的壓力問題而構(gòu)建的redis復(fù)制樹并不一定是上圖的樣式,但只要能解決問題就行。在之前我們說redis提供的aof文件可以將redis的數(shù)據(jù)丟失限制在一秒以內(nèi),但是如果我們同時采用復(fù)制的策略,那么我們可將我們的數(shù)據(jù)在多機的磁盤上進(jìn)行保持,這樣將更有利于數(shù)據(jù)的安全性。當(dāng)然如果我們使用aof策略,那么我們的從節(jié)點就應(yīng)該開啟aof文件。這塊在前兩篇文章已經(jīng)講過了。但是問題就是當(dāng)我們將數(shù)據(jù)寫入master的時候,如何保證slave節(jié)點都有值?一種粗糙的方式就是間隔一段時間去檢測一下,但是這種方式我們無法確定這個時間的片段應(yīng)該為多少。這塊我們可以通過日志aof_pending_bio_fsync來判斷。這塊書中提供了一個redis復(fù)制鏈的數(shù)據(jù)同步檢測方法。注意這里建立了兩個redis的信道,首先在master上對數(shù)據(jù)添加一個標(biāo)志,然后輪詢從節(jié)點的數(shù)據(jù)同步狀態(tài),然后查詢從節(jié)點的接收的數(shù)據(jù)變化,最后通過aof_pengding_bio_fsync來判斷數(shù)據(jù)是否進(jìn)入了從節(jié)點的磁盤。 瀏覽 28點贊 評論 收藏 分享 手機掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 《redis in action》redis復(fù)制寫點筆記0Redis in ActionRedis in Action0Redis in ActionRedis is an innovative data tool that offers more 《redis in action》redis事務(wù)寫點筆記0《redis in action》redis發(fā)布訂閱寫點筆記0《redis in action》Redis做隊列寫點筆記0《redis in action》Redis分布式鎖寫點筆記0《redis in action》Redis aof持久化寫點筆記0《redis in action》redis持久化簡介寫點筆記0《redis in action》Redis災(zāi)備處理寫點筆記0點贊 評論 收藏 分享 手機掃一掃分享分享 舉報