RocketMQ之入門學(xué)習(xí)核心基本原理(四)

前言

本篇學(xué)習(xí)了解RocktMq入門核心基本的原理概念以及記錄一些基本解析劝评。

消息的存儲(chǔ)結(jié)構(gòu)

生產(chǎn)者發(fā)送后趴拧,在消費(fèi)者消費(fèi)前的存儲(chǔ)結(jié)構(gòu)圖
consume Queue 存在消息在CommitLog中的位置


image.png
  • 1床牧、 消費(fèi)端采用零拷貝
  • 2、Commit log存儲(chǔ)消息實(shí)體(真實(shí)數(shù)據(jù))。順序?qū)懛ΓS機(jī)讀索赏。
  • 3盼玄、consume Queue 記錄在CommitLog位置,類似于索引文件潜腻,一對(duì)多的關(guān)系
  • 4埃儿、每一個(gè)topic,message queue 都對(duì)應(yīng)一個(gè)Consume Queue融涣,具體的值海是讀取commit log消息本身桥氏。
    -5吹菱、Index 消息屬性檢索消息们衙,引入ConsumeQueue文件解決了基于topic查找消息的問題
    -6瞬逊、CommitLog里存儲(chǔ)了Consume Queues、Message Queue忽你、Tag等所有信息幼东,即使ConsumeQueue丟失,也可以通過commitLog完全恢復(fù)出來

同步刷盤與異步刷盤

RocketMQ消息存儲(chǔ):內(nèi)存 + 磁盤存儲(chǔ)科雳,兩種刷盤方式
存儲(chǔ)與讀寫是基于JDK NIO的內(nèi)存映射機(jī)制(MappedByteBuffer)根蟹,消息存儲(chǔ)時(shí)首先將消息追加到文件內(nèi)存映射(commit操作),再根據(jù)配置的刷盤策略在不同時(shí)間進(jìn)行刷寫到磁盤(flush操作)炸渡。

同步刷盤

同步刷盤即持久化成功后才向客戶端返回成功娜亿。以犧牲寫入性能為代價(jià)。

異步刷盤

異步刷盤是指 Broker 將消息存儲(chǔ)到頁緩存后就立即返回成功蚌堵,然后開啟一個(gè)異步線程定時(shí)將內(nèi)存中的數(shù)據(jù)寫入磁盤买决,默認(rèn)間隔時(shí)間 500ms。

高可用機(jī)制

  • 集群有兩個(gè)角色吼畏,Master-Salve
  • 根據(jù)BorkerId區(qū)分主從節(jié)點(diǎn)
  • Master讀寫督赤,Slave只寫
  • 當(dāng)Master繁忙或者不可用時(shí),可以自動(dòng)切換到Slave讀取消息

NameServer協(xié)調(diào)者

對(duì)于一個(gè)消息隊(duì)列集群來說是整個(gè)集群的狀態(tài)服務(wù)器泻蚊,系統(tǒng)由很多臺(tái)機(jī)器組成躲舌,每個(gè)機(jī)器的角色、IP 地址都不相同性雄,而且這些信息是變動(dòng)的没卸。這種情況下羹奉, 如果一個(gè)新的Producer 或Consumer 加入,怎么配置連接信息呢约计?NameServer 的存在主要是為了解決這類問題诀拭,由NameServer 維護(hù)這些配置信息、狀態(tài)信息煤蚌,其他角色都通過NameServer 來協(xié)同執(zhí)行

  • NameServer部署耕挨、相互獨(dú)立
    Nameserver是一個(gè)獨(dú)立的元數(shù)據(jù)管理組件,它需要獨(dú)立運(yùn)行尉桩,并且與Broker和Consumer分開部署筒占。通常情況下,建議在集群中至少部署兩個(gè)Nameserver節(jié)點(diǎn)蜘犁,以確保高可用性翰苫。
  • NameServer 維護(hù)的主要信息:
  • topic-》List<queueData> 某個(gè)Broker的隊(duì)列
  • 為什么不用Zookpper
  1. NameServer 輕量級(jí),代碼行數(shù)1000多行
  2. RocketMQ追求的是AP沽瘦,不是CP革骨,需要高可用
  3. zk是CP,雖然有數(shù)據(jù)共享析恋,每個(gè)節(jié)點(diǎn)數(shù)據(jù)會(huì)一致性,但zk集群掛掉了一半以上就不能用
  4. NameServer是AP盛卡,節(jié)點(diǎn)間不通信助隧,這樣會(huì)導(dǎo)致節(jié)點(diǎn)間數(shù)據(jù)信息會(huì)發(fā)生短暫的不一致,但每個(gè)broker都會(huì)定時(shí)向所有nameserver上報(bào)路由信息和心跳滑沧;當(dāng)某個(gè)broker下線了并村,NameServer也會(huì)延時(shí)30s才知道,而且不會(huì)通知客戶端(生產(chǎn)和消費(fèi)者)滓技,只能靠客戶端自己來拉哩牍,RocketMQ 是靠消息重試機(jī)制解決這個(gè)問題的,所以是最終一致性令漂;但NameServer集群只要有一個(gè)節(jié)點(diǎn)就可用膝昆;

結(jié)尾

這個(gè)文章主要也是入門級(jí)的了解RocketMQ的基本核心原理概念,從消息的基本存儲(chǔ)結(jié)構(gòu)叠必,以及刷盤的兩種方式河NameServer協(xié)調(diào)者的作用荚孵。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市纬朝,隨后出現(xiàn)的幾起案子收叶,更是在濱河造成了極大的恐慌,老刑警劉巖共苛,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件判没,死亡現(xiàn)場(chǎng)離奇詭異蜓萄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)澄峰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門绕德,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摊阀,你說我怎么就攤上這事耻蛇。” “怎么了胞此?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵臣咖,是天一觀的道長。 經(jīng)常有香客問我漱牵,道長夺蛇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任酣胀,我火速辦了婚禮刁赦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闻镶。我一直安慰自己甚脉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布铆农。 她就那樣靜靜地躺著牺氨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪墩剖。 梳的紋絲不亂的頭發(fā)上猴凹,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音岭皂,去河邊找鬼郊霎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛爷绘,可吹牛的內(nèi)容都是我干的书劝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼揉阎,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼庄撮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起毙籽,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤洞斯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烙如,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡么抗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亚铁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝇刀。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖徘溢,靈堂內(nèi)的尸體忽然破棺而出吞琐,到底是詐尸還是另有隱情,我是刑警寧澤然爆,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布站粟,位于F島的核電站,受9級(jí)特大地震影響曾雕,放射性物質(zhì)發(fā)生泄漏奴烙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一剖张、第九天 我趴在偏房一處隱蔽的房頂上張望切诀。 院中可真熱鬧,春花似錦搔弄、人聲如沸幅虑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翘单。三九已至,卻和暖如春蹦渣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背貌亭。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工柬唯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人圃庭。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓锄奢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親剧腻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拘央,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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