拓?fù)?/h1>
Redis的復(fù)制拓?fù)浣Y(jié)構(gòu)可以支持單層或多層復(fù)制關(guān)系琳钉,根據(jù)拓?fù)鋸?fù)制性可以分為以下三種:一主一從势木、一主多從、樹狀主從結(jié)構(gòu)歌懒,下面分別介紹啦桌。
-
一主一從結(jié)構(gòu)
一主一從結(jié)構(gòu)是簡單的復(fù)制拓?fù)浣Y(jié)構(gòu),用于主節(jié)點(diǎn)出現(xiàn)宕機(jī)時從節(jié)點(diǎn)提供故障轉(zhuǎn)移支持及皂。當(dāng)應(yīng)用寫命令并發(fā)量較高且需要持久化時甫男,可以只在從節(jié)點(diǎn)上開啟AOF,這樣既保證數(shù)據(jù)安全性同時也避免了持久化對主節(jié)點(diǎn)的性能干擾验烧。但需要注意的是板驳,主節(jié)點(diǎn)關(guān)閉持久化功能時,如果主節(jié)點(diǎn)脫機(jī)要避免自動重啟操作碍拆。因?yàn)橹鞴?jié)點(diǎn)之前沒有開啟持久化功能自動重啟后數(shù)據(jù)集為空若治,這是從節(jié)點(diǎn)如果繼續(xù)復(fù)制主節(jié)點(diǎn)會導(dǎo)致從節(jié)點(diǎn)數(shù)據(jù)也被清空的情況,喪失了持久化的意義倔监。安全的做法是從節(jié)點(diǎn)上執(zhí)行slaveof no one斷開與主節(jié)點(diǎn)的復(fù)制關(guān)系直砂,再重啟主節(jié)點(diǎn)從而避免這一問題。
-
一主多從結(jié)構(gòu)
一主多從結(jié)構(gòu)(又稱為星型拓?fù)浣Y(jié)構(gòu))使得應(yīng)用端可以利用多個從節(jié)點(diǎn)實(shí)現(xiàn)讀寫分離浩习。對于讀占比較大的場景静暂,可以把讀命令發(fā)送到從節(jié)點(diǎn)來分擔(dān)主節(jié)點(diǎn)壓力。同時在日常開發(fā)中如果需要執(zhí)行一些比較耗時的讀命令谱秽,如:keys洽蛀、sort等摹迷,可以在其中一臺從節(jié)點(diǎn)上執(zhí)行,防止慢查詢對主節(jié)點(diǎn)造成阻塞從而影響線上服務(wù)的穩(wěn)定性郊供。對于寫并發(fā)量較高的場景峡碉,多個從節(jié)點(diǎn)會導(dǎo)致主節(jié)點(diǎn)寫命令的多次發(fā)送從而過度消耗網(wǎng)絡(luò)帶寬,同時也加重了主節(jié)點(diǎn)的負(fù)載影響服務(wù)穩(wěn)定性驮审。
-
樹狀主從結(jié)構(gòu)
樹狀主從結(jié)構(gòu)(又稱為樹狀拓?fù)浣Y(jié)構(gòu))使得從節(jié)點(diǎn)不但可以復(fù)制主節(jié)點(diǎn)數(shù)據(jù)鲫寄,同時可以作為其他從節(jié)點(diǎn)的主節(jié)點(diǎn)繼續(xù)向下層復(fù)制。通過引入復(fù)制中間層疯淫,可以有效降低主節(jié)點(diǎn)負(fù)載和需要傳送給從節(jié)點(diǎn)的數(shù)據(jù)量地来。當(dāng)主節(jié)點(diǎn)需要掛載多個從節(jié)點(diǎn)時為了避免對主節(jié)點(diǎn)的性能干擾,可以采用樹狀主從結(jié)構(gòu)減低主節(jié)點(diǎn)壓力熙掺。