久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

什么是集群消費(fèi),什么是廣播消費(fèi),,什么是Topic,、什么又是Broker

 漢無為 2018-11-17

Topic

主題,從邏輯上講一個(gè)Topic就是一個(gè)Queue,,即一個(gè)隊(duì)列,;從存儲上講,一個(gè)Topic存儲了一類相同的消息,,是一類消息的集合,。比如一個(gè)名稱為trade.order.queue的Topic里面存的都是訂單相關(guān)的消息。

Partition

分區(qū),。分區(qū)是存在于服務(wù)端,,內(nèi)部保持順序、且順序不可變更的一個(gè)隊(duì)列,,用于存儲消息,。分區(qū)可能不應(yīng)該出現(xiàn)在消息領(lǐng)域內(nèi),在使用消息中間件發(fā)送和消費(fèi)時(shí),,實(shí)際上用戶是感受不到分區(qū)這個(gè)概念的,。下面這幅圖便于大家去理解分區(qū):

什么是集群消費(fèi),,什么是廣播消費(fèi),,什么是Topic、什么又是Broker


一個(gè)Topic存儲消息時(shí)會分為多個(gè)Partition,,每個(gè)Partition內(nèi)消息是有順序的,。至于為什么需要將Topic劃分成按照Partition存儲,在以后設(shè)計(jì)和實(shí)現(xiàn)部分會解釋,。

Producer

生產(chǎn)者,,消息的生產(chǎn)方,一般由業(yè)務(wù)系統(tǒng)負(fù)責(zé)產(chǎn)生消息,。

Producer負(fù)責(zé)決定將消息發(fā)送到哪個(gè)Topic的那個(gè)Partition,。

Consumer

消費(fèi)者,,消息的消費(fèi)方,一般是后臺系統(tǒng)負(fù)責(zé)異步消費(fèi)消息,。

Consumer訂閱Topic,,消費(fèi)Topic內(nèi)部的消息。

Broker

消息的存儲者,,一般也稱為Server,,在JMS中叫Provider,在RocketMQ(阿里開源的消息中間件)中叫Broker,。

NameServer

NameServer其實(shí)不是消息中間件的概念了,,一般在分布式系統(tǒng)中都會有一個(gè)角色作為NameServer用于服務(wù)發(fā)現(xiàn),在Kafka中使用ZooKeeper來實(shí)現(xiàn),,在RocketMQ中單獨(dú)寫了NameServer服務(wù),。

Group

Group用于標(biāo)志Consumer的身份,擁有相同Group名稱的Consumer一般消費(fèi)一類消息,,且消費(fèi)邏輯是相同的,。

RocketMQ中Producer也需要Group標(biāo)志身份,但是實(shí)際上Producer是不需要的,。因?yàn)镻roducer之間是不相關(guān)的,,Consumer之間是需要協(xié)同工作的。

這里多解釋一下為什么Consumer之間是需要協(xié)同工作的,。

比如啟動了兩個(gè)Consumer來消費(fèi)訂單消息,,然后調(diào)用物流系統(tǒng)進(jìn)行發(fā)貨。那么在產(chǎn)生一條訂單消息后,,只能讓兩個(gè)Consumer中的一個(gè)來處理消息(否者就發(fā)貨兩次了)所以需要一個(gè)標(biāo)識將這兩個(gè)Consumer標(biāo)記為行為一致的,。另一個(gè)場景是如果一個(gè)Consumer實(shí)例宕機(jī)了,這個(gè)時(shí)候需要有行為相同的Consumer去接管它的消費(fèi)任務(wù),,那么就需要一個(gè)標(biāo)識來標(biāo)識行為相同的Consumer,。

那是不是只要行為相同的Consumer只存在一個(gè)就好了呢?是的,,如果只有行為一致的Consumer,,那么就不存在協(xié)同工作,也可以不需要Group,,每個(gè)Consumer擁有獨(dú)立的ID即可,。但是實(shí)際系統(tǒng)是不可能的,從系統(tǒng)可用性和性能上都不可能(單個(gè)Consumer就有單點(diǎn)問題,,也有性能問題,,畢竟我們談的是分布式系統(tǒng))。

集群消費(fèi)

集群消費(fèi)的含義是說一類Consumer(即Group相同的Consumer的集合)共同完成對一個(gè)Topic的消費(fèi),。其實(shí)上面說明Consumer需要協(xié)同工作時(shí)舉例中就默認(rèn)是集群消費(fèi)了,,這也是現(xiàn)實(shí)業(yè)務(wù)中95%以上需求的消費(fèi)方式,。

具體來看集群消費(fèi)模式如下:

什么是集群消費(fèi),什么是廣播消費(fèi),,什么是Topic,、什么又是Broker


Consumer0和Consumer1屬于同一個(gè)Group,假設(shè)Topic中有0~5共6條消息,,Consumer0消費(fèi)到0~2,,Consumer1消費(fèi)到3~5,它們共同完成了Topic中消息的消費(fèi),。

這存在于大量的無狀態(tài)的后臺系統(tǒng)中,,就如上面說的消費(fèi)訂單消息進(jìn)行發(fā)貨的例子。

廣播消費(fèi)

廣播消費(fèi)的含義是Topic中的每一條消息都會被一類Consumer(屬于同一個(gè)Group的多個(gè)Consumer)中的每個(gè)Consumer實(shí)例消費(fèi),。

如下圖,,Topic總的0~5共6條消費(fèi),Consumer0會消費(fèi)到0~5完整的6條消息,,Consumer1也會消費(fèi)到0~5的6條消息,。

什么是集群消費(fèi),什么是廣播消費(fèi),,什么是Topic,、什么又是Broker


這種消費(fèi)往往應(yīng)用在有狀態(tài)的服務(wù),比如緩存服務(wù)器去消費(fèi)消息更新自己的緩存數(shù)據(jù),,那么每一臺緩存服務(wù)器都需要拿到消息,。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多