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