什么是消息队列 RocketMQ 版?
?
消息隊(duì)列 RocketMQ 版是阿里云基于 Apache RocketMQ 構(gòu)建的低延遲、高并發(fā)、高可用、高可靠的分布式消息中間件。消息隊(duì)列 RocketMQ 版既可為分布式應(yīng)用系統(tǒng)提供異步解耦和削峰填谷的能力,同時(shí)也具備互聯(lián)網(wǎng)應(yīng)用所需的海量消息堆積、高吞吐、可靠重試等特性。
訪問(wèn)方式
除公網(wǎng)訪問(wèn)方式外,消息隊(duì)列 RocketMQ 版還支持專有網(wǎng)絡(luò) VPC。您可以完全掌控自己的專有網(wǎng)絡(luò),例如選擇 IP 地址范圍、配置路由表和網(wǎng)關(guān)等,您可以在自己定義的專有網(wǎng)絡(luò)中使用阿里云資源如云服務(wù)器、云數(shù)據(jù)庫(kù) RDS 版和負(fù)載均衡等。
核心概念
- Topic:消息主題,一級(jí)消息類型,生產(chǎn)者向其發(fā)送消息。
- 生產(chǎn)者:也稱為消息發(fā)布者,負(fù)責(zé)生產(chǎn)并發(fā)送消息至 Topic。
- 消費(fèi)者:也稱為消息訂閱者,負(fù)責(zé)從 Topic 接收并消費(fèi)消息。
- 消息:生產(chǎn)者向 Topic 發(fā)送并最終傳送給消費(fèi)者的數(shù)據(jù)和(可選)屬性的組合。
- 消息屬性:生產(chǎn)者可以為消息定義的屬性,包含 Message Key 和 Tag。
- Group:一類生產(chǎn)者或消費(fèi)者,這類生產(chǎn)者或消費(fèi)者通常生產(chǎn)或消費(fèi)同一類消息,且消息發(fā)布或訂閱的邏輯一致。
消息隊(duì)列 RocketMQ 版涉及的概念的詳細(xì)解釋,請(qǐng)參見(jiàn)名詞解釋。
消息收發(fā)模型
消息隊(duì)列 RocketMQ 版支持發(fā)布/訂閱模型,消息生產(chǎn)者應(yīng)用創(chuàng)建 Topic 并將消息發(fā)送到 Topic。消費(fèi)者應(yīng)用創(chuàng)建對(duì) Topic 的訂閱以便從其接收消息。通信可以是一對(duì)多(扇出)、多對(duì)一(扇入)和多對(duì)多。
具體通信如下圖所示。
圖 1.?消息收發(fā)模型
- 生產(chǎn)者集群:用來(lái)表示發(fā)送消息應(yīng)用,一個(gè)生產(chǎn)者集群下包含多個(gè)生產(chǎn)者實(shí)例,可以是多臺(tái)機(jī)器,也可以是一臺(tái)機(jī)器的多個(gè)進(jìn)程,或者一個(gè)進(jìn)程的多個(gè)生產(chǎn)者對(duì)象。
一個(gè)生產(chǎn)者集群可以發(fā)送多個(gè) Topic 消息。發(fā)送分布式事務(wù)消息時(shí),如果生產(chǎn)者中途意外宕機(jī),Broker 會(huì)主動(dòng)回調(diào)生產(chǎn)者集群的任意一臺(tái)機(jī)器來(lái)確認(rèn)事務(wù)狀態(tài)。
- 消費(fèi)者集群:用來(lái)表示消費(fèi)消息應(yīng)用,一個(gè)消費(fèi)者集群下包含多個(gè)消費(fèi)者實(shí)例,可以是多臺(tái)機(jī)器,也可以是多個(gè)進(jìn)程,或者是一個(gè)進(jìn)程的多個(gè)消費(fèi)者對(duì)象。
一個(gè)消費(fèi)者集群下的多個(gè)消費(fèi)者以均攤方式消費(fèi)消息。如果設(shè)置的是廣播方式,那么這個(gè)消費(fèi)者集群下的每個(gè)實(shí)例都消費(fèi)全量數(shù)據(jù)。
一個(gè)消費(fèi)者集群對(duì)應(yīng)一個(gè) Group ID,一個(gè) Group ID 可以訂閱多個(gè) Topic,如圖 1?中的 Group 2 所示。Group 和 Topic 的訂閱關(guān)系可以通過(guò)直接在程序中設(shè)置即可,具體設(shè)置方法可參見(jiàn)產(chǎn)品更新日志中的資源申請(qǐng)流程優(yōu)化部分。
應(yīng)用場(chǎng)景
- 削峰填谷
諸如秒殺、搶紅包、企業(yè)開(kāi)門(mén)紅等大型活動(dòng)時(shí)皆會(huì)帶來(lái)較高的流量脈沖,或因沒(méi)做相應(yīng)的保護(hù)而導(dǎo)致系統(tǒng)超負(fù)荷甚至崩潰,或因限制太過(guò)導(dǎo)致請(qǐng)求大量失敗而影響用戶體驗(yàn),消息隊(duì)列 RocketMQ 版可提供削峰填谷的服務(wù)來(lái)解決該問(wèn)題。
- 異步解耦
交易系統(tǒng)作為淘寶/天貓主站最核心的系統(tǒng),每筆交易訂單數(shù)據(jù)的產(chǎn)生會(huì)引起幾百個(gè)下游業(yè)務(wù)系統(tǒng)的關(guān)注,包括物流、購(gòu)物車、積分、流計(jì)算分析等等,整體業(yè)務(wù)系統(tǒng)龐大而且復(fù)雜,消息隊(duì)列 RocketMQ 版可實(shí)現(xiàn)異步通信和應(yīng)用解耦,確保主站業(yè)務(wù)的連續(xù)性。
- 順序收發(fā)
細(xì)數(shù)日常中需要保證順序的應(yīng)用場(chǎng)景非常多,例如證券交易過(guò)程時(shí)間優(yōu)先原則,交易系統(tǒng)中的訂單創(chuàng)建、支付、退款等流程,航班中的旅客登機(jī)消息處理等等。與先進(jìn)先出(First In First Out,縮寫(xiě) FIFO)原理類似,消息隊(duì)列 RocketMQ 版提供的順序消息即保證消息 FIFO。
- 分布式事務(wù)一致性
交易系統(tǒng)、支付紅包等場(chǎng)景需要確保數(shù)據(jù)的最終一致性,大量引入消息隊(duì)列 RocketMQ 版的分布式事務(wù),既可以實(shí)現(xiàn)系統(tǒng)之間的解耦,又可以保證最終的數(shù)據(jù)一致性。
- 大數(shù)據(jù)分析
數(shù)據(jù)在“流動(dòng)”中產(chǎn)生價(jià)值,傳統(tǒng)數(shù)據(jù)分析大多是基于批量計(jì)算模型,而無(wú)法做到實(shí)時(shí)的數(shù)據(jù)分析,利用阿里云消息隊(duì)列 RocketMQ 版與流式計(jì)算引擎相結(jié)合,可以很方便的實(shí)現(xiàn)將業(yè)務(wù)數(shù)據(jù)進(jìn)行實(shí)時(shí)分析。
- 分布式緩存同步
天貓雙 11 大促,各個(gè)分會(huì)場(chǎng)琳瑯滿目的商品需要實(shí)時(shí)感知價(jià)格變化,大量并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)導(dǎo)致會(huì)場(chǎng)頁(yè)面響應(yīng)時(shí)間長(zhǎng),集中式緩存因?yàn)閹捚款i限制商品變更的訪問(wèn)流量,通過(guò)消息隊(duì)列 RocketMQ 版構(gòu)建分布式緩存,實(shí)時(shí)通知商品數(shù)據(jù)的變化。
更多信息請(qǐng)參見(jiàn)適用場(chǎng)景。
?上一篇: 產(chǎn)品更新日志
總結(jié)
以上是生活随笔為你收集整理的什么是消息队列 RocketMQ 版?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: springboot高级——消息队列相关
- 下一篇: RocketMQ控制台安装教程