日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

RocketMQ消息发送及消费的基本原理

發(fā)布時(shí)間:2024/4/13 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RocketMQ消息发送及消费的基本原理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是一個(gè)比較宏觀的部署架構(gòu)圖,rocketmq天然支持高可用,它可以支持多主多從的部署架構(gòu),這也是和kafka最大的區(qū)別之一

原因是RocketMQ中并沒有master選舉功能,所以通過配置多個(gè)master節(jié)點(diǎn)來保證rocketMQ的高可用。和所有的集群角色定位一樣,master節(jié)點(diǎn)負(fù)責(zé)接受事務(wù)請(qǐng)求、slave節(jié)點(diǎn)只負(fù)責(zé)接收讀請(qǐng)求,并且接收master同步過來的數(shù)據(jù)和slave保持一直。當(dāng)master掛了以后,如果當(dāng)前rocketmq是一主多從,?就意味著無法接受發(fā)送端的消息,但是消費(fèi)者仍然能夠繼續(xù)消費(fèi)。

所以配置多個(gè)主節(jié)點(diǎn)后,可以保證當(dāng)其中一個(gè)master節(jié)點(diǎn)掛了,另外一個(gè)master節(jié)點(diǎn)仍然能夠?qū)ν馓峁┫l(fā)送服務(wù)。

當(dāng)存在多個(gè)主節(jié)點(diǎn)時(shí),一條消息只會(huì)發(fā)送到其中一個(gè)主節(jié)點(diǎn),rocketmq對(duì)于多個(gè)master節(jié)點(diǎn)的消息發(fā)送,會(huì)做負(fù)載均衡,使得消息可以平衡的發(fā)送到多個(gè)master節(jié)點(diǎn)上。

一個(gè)消費(fèi)者可以同時(shí)消費(fèi)多個(gè)master節(jié)點(diǎn)上的消息,在下面這個(gè)架構(gòu)圖中,兩個(gè)master節(jié)點(diǎn)恰好可以平均分發(fā)到兩個(gè)消費(fèi)者上,如果此時(shí)只有一個(gè)消費(fèi)者,那么這個(gè)消費(fèi)者會(huì)消費(fèi)兩個(gè)master節(jié)點(diǎn)的數(shù)據(jù)。

由于每個(gè)master可以配置多個(gè)slave,所以如果其中一個(gè)master掛了,消息仍然可以被消費(fèi)者從slave節(jié)點(diǎn)消費(fèi)到。可以完美的實(shí)現(xiàn)rocketmq消息的高可用

接下來,站在topic的角度來看看消息是如何分發(fā)和處理的,假設(shè)有兩個(gè)master節(jié)點(diǎn)的集群,創(chuàng)建了一個(gè)TestTopic,并且對(duì)這個(gè)topic創(chuàng)建了兩個(gè)隊(duì)列,也就是分區(qū)。

消費(fèi)者定義了兩個(gè)分組,分組的概念也是和kafka一樣,通過分組可以實(shí)現(xiàn)消息的廣播。?

集群支持?

RocketMQ天生對(duì)集群的支持非常友好

1)單Master?

優(yōu)點(diǎn):除了配置簡(jiǎn)單沒什么優(yōu)點(diǎn)

缺點(diǎn):不可靠,該機(jī)器重啟或宕機(jī),將導(dǎo)致整個(gè)服務(wù)不可用

2)多Master?

優(yōu)點(diǎn):配置簡(jiǎn)單,性能最高

缺點(diǎn):可能會(huì)有少量消息丟失(配置相關(guān)),單臺(tái)機(jī)器重啟或宕機(jī)期間,該機(jī)器下未被消費(fèi)的消息在機(jī)器恢復(fù)前不可訂閱,影響消息實(shí)時(shí)性

3)多Master多Slave,每個(gè)Master配一個(gè)Slave,有多對(duì)Master-Slave,集群采用異步復(fù)制方式,主備有短暫消息延遲,毫秒級(jí)

優(yōu)點(diǎn):性能同多Master幾乎一樣,實(shí)時(shí)性高,主備間切換對(duì)應(yīng)用透明,不需人工干預(yù)

缺點(diǎn):Master宕機(jī)或磁盤損壞時(shí)會(huì)有少量消息丟失

4)多Master多Slave,每個(gè)Master配一個(gè)Slave,有多對(duì)Master-Slave,集群采用同步雙寫方式,主備都寫成功,向應(yīng)用返回成功

優(yōu)點(diǎn):服務(wù)可用性與數(shù)據(jù)可用性非常高

缺點(diǎn):性能比異步集群略低,當(dāng)前版本主宕備不能自動(dòng)切換為主

需要注意的是,在RocketMQ里面,1臺(tái)機(jī)器只能要么是Master,要么是Slave。這個(gè)在初始的機(jī)器配置里面,就定死了。不會(huì)像kafka那樣存在master動(dòng)態(tài)選舉的功能。其中Master的broker id = 0,Slave?的broker id > 0。

有點(diǎn)類似于mysql的主從概念,master掛了以后,slave仍然可以提供讀服務(wù),但是由于有多主的存在,當(dāng)一個(gè)master掛了以后,可以寫到其他的master上。

?

總結(jié)

以上是生活随笔為你收集整理的RocketMQ消息发送及消费的基本原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。