緩存架構(gòu)之07:redis replication的完整流運(yùn)行程和原理的再次深入剖析

1、復(fù)制的完整流程

(1)slave node啟動审孽,僅僅保存master node的信息,包括master node的host和ip闷串,但是復(fù)制流程沒開始

master host和ip是從哪兒來的,redis.conf里面的slaveof配置的

(2)slave node內(nèi)部有個定時任務(wù)筋量,每秒檢查是否有新的master node要連接和復(fù)制烹吵,如果發(fā)現(xiàn),就跟master node建立socket網(wǎng)絡(luò)連接

(3)slave node發(fā)送ping命令給master node

(4)口令認(rèn)證毛甲,如果master設(shè)置了requirepass年叮,那么salve node必須發(fā)送masterauth的口令過去進(jìn)行認(rèn)證

(5)master node第一次執(zhí)行全量復(fù)制,將所有數(shù)據(jù)發(fā)給slave node

(6)master node后續(xù)持續(xù)將寫命令玻募,異步復(fù)制給slave node

2、數(shù)據(jù)同步相關(guān)的核心機(jī)制

指的就是第一次slave連接msater的時候一姿,執(zhí)行的全量復(fù)制七咧,那個過程里面你的一些細(xì)節(jié)的機(jī)制

(1)master和slave都會維護(hù)一個offset

master會在自身不斷累加offset,slave也會在自身不斷累加offset

slave每秒都會上報自己的offset給master叮叹,同時master也會保存每個slave的offset

這個倒不是說特定就用在全量復(fù)制的艾栋,主要是master和slave都要知道各自的數(shù)據(jù)的offset,才能知道互相之間的數(shù)據(jù)不一致的情況

(2)backlog

master node有一個backlog蛉顽,默認(rèn)是1MB大小

master node給slave node復(fù)制數(shù)據(jù)時蝗砾,也會將數(shù)據(jù)在backlog中同步寫一份

backlog主要是用來做全量復(fù)制中斷候的增量復(fù)制的

(3)master run id


master run id 的作用

info server,可以看到master run id

如果根據(jù)host+ip定位master node携冤,是不靠譜的悼粮,如果master node重啟或者數(shù)據(jù)出現(xiàn)了變化,那么slave node應(yīng)該根據(jù)不同的run id區(qū)分曾棕,run id不同就做全量復(fù)制

如果需要不更改run id重啟redis扣猫,可以使用redis-cli debug reload命令

(4)psync

從節(jié)點(diǎn)使用psync從master node進(jìn)行復(fù)制,psync runid offset

master node會根據(jù)自身的情況返回響應(yīng)信息翘地,可能是FULLRESYNC runid offset觸發(fā)全量復(fù)制申尤,可能是CONTINUE觸發(fā)增量復(fù)制

3、全量復(fù)制


復(fù)制的完整的基本流程

(1)master執(zhí)行bgsave衙耕,在本地生成一份rdb快照文件

(2)master node將rdb快照文件發(fā)送給salve node昧穿,如果rdb復(fù)制時間超過60秒(repl-timeout),那么slave node就會認(rèn)為復(fù)制失敗橙喘,可以適當(dāng)調(diào)節(jié)大這個參數(shù)

(3)對于千兆網(wǎng)卡的機(jī)器时鸵,一般每秒傳輸100MB,6G文件渴杆,很可能超過60s

(4)master node在生成rdb時寥枝,會將所有新的寫命令緩存在內(nèi)存中宪塔,在salve node保存了rdb之后,再將新的寫命令復(fù)制給salve node

(5)client-output-buffer-limit slave 256MB 64MB 60囊拜,如果在復(fù)制期間某筐,內(nèi)存緩沖區(qū)持續(xù)消耗超過64MB,或者一次性超過256MB冠跷,那么停止復(fù)制南誊,復(fù)制失敗

(6)slave node接收到rdb之后,清空自己的舊數(shù)據(jù)蜜托,然后重新加載rdb到自己的內(nèi)存中抄囚,同時基于舊的數(shù)據(jù)版本對外提供服務(wù)

(7)如果slave node開啟了AOF,那么會立即執(zhí)行BGREWRITEAOF橄务,重寫AOF

rdb生成幔托、rdb通過網(wǎng)絡(luò)拷貝、slave舊數(shù)據(jù)的清理蜂挪、slave aof rewrite重挑,很耗費(fèi)時間

如果復(fù)制的數(shù)據(jù)量在4G~6G之間,那么很可能全量復(fù)制時間消耗到1分半到2分鐘

4棠涮、增量復(fù)制

(1)如果全量復(fù)制過程中谬哀,master-slave網(wǎng)絡(luò)連接斷掉,那么salve重新連接master時严肪,會觸發(fā)增量復(fù)制

(2)master直接從自己的backlog中獲取部分丟失的數(shù)據(jù)史煎,發(fā)送給slave node,默認(rèn)backlog就是1MB

(3)msater就是根據(jù)slave發(fā)送的psync中的offset來從backlog中獲取數(shù)據(jù)的

5驳糯、heartbeat

主從節(jié)點(diǎn)互相都會發(fā)送heartbeat信息

master默認(rèn)每隔10秒發(fā)送一次heartbeat篇梭,salve node每隔1秒發(fā)送一個heartbeat

6、異步復(fù)制

master每次接收到寫命令之后结窘,現(xiàn)在內(nèi)部寫入數(shù)據(jù)很洋,然后異步發(fā)送給slave node

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市隧枫,隨后出現(xiàn)的幾起案子喉磁,更是在濱河造成了極大的恐慌,老刑警劉巖官脓,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件协怒,死亡現(xiàn)場離奇詭異,居然都是意外死亡卑笨,警方通過查閱死者的電腦和手機(jī)孕暇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妖滔,你說我怎么就攤上這事隧哮。” “怎么了座舍?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵沮翔,是天一觀的道長。 經(jīng)常有香客問我曲秉,道長采蚀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任承二,我火速辦了婚禮榆鼠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亥鸠。我一直安慰自己妆够,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布负蚊。 她就那樣靜靜地躺著责静,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盖桥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天题翻,我揣著相機(jī)與錄音揩徊,去河邊找鬼。 笑死嵌赠,一個胖子當(dāng)著我的面吹牛塑荒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姜挺,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼齿税,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了炊豪?” 一聲冷哼從身側(cè)響起凌箕,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤黄绩,失蹤者是張志新(化名)和其女友劉穎深员,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赖歌,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缺虐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年芜壁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡慧妄,死狀恐怖顷牌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情塞淹,我是刑警寧澤窟蓝,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站窖铡,受9級特大地震影響疗锐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜费彼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一滑臊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箍铲,春花似錦雇卷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翘瓮,卻和暖如春贮折,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背资盅。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工调榄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呵扛。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓每庆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親今穿。 傳聞我的和親對象是個殘疾皇子缤灵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容