RocketMQ 介紹及核心概念

RocketMQ 是阿里巴巴開源的分布式消息中間件。

RocketMQ 特點(diǎn)

  • 是一個隊(duì)列模型的消息中間件钝腺,具有高性能抛姑、高可靠、高實(shí)時艳狐、分布式等特點(diǎn)
  • Producer定硝、Consumer、隊(duì)列都可以分布式
  • Producer 向一些隊(duì)列輪流發(fā)送消息毫目,隊(duì)列集合稱為 Topic蔬啡,Consumer 如果做廣播消費(fèi),則一個 Consumer 實(shí)例消費(fèi)這個 Topic 對應(yīng)的所有隊(duì)列镀虐,如果做集群消費(fèi)箱蟆,則多個 Consumer 實(shí)例平均消費(fèi)這個 Topic 對應(yīng)的隊(duì)列集合
  • 能夠保證嚴(yán)格的消息順序
  • 支持拉(pull)和推(push)兩種消息模式
  • 高效的訂閱者水平擴(kuò)展能力
  • 實(shí)時的消息訂閱機(jī)制
  • 億級消息堆積能力
  • 支持多種消息協(xié)議,如 JMS粉私、OpenMessaging 等
  • 較少的依賴

RocketMQ 核心概念

  • Producer
    消息生產(chǎn)者顽腾,將業(yè)務(wù)系統(tǒng)生成的消息發(fā)送給消息代理(Broker),RocketMQ 提供了多種發(fā)送消息的模式:同步(synchronous)诺核、異步(asynchronous)和單向(one-way)抄肖。

  • Producer Group
    消息生產(chǎn)者組,具有相同角色的消息生產(chǎn)者組合在一起窖杀,相同角色可以理解為生產(chǎn)同一類消息漓摩。

  • Consumer
    消息消費(fèi)者,從消息代理(Broker)獲取消息并將其提供給應(yīng)用程序入客。又可以根據(jù)消息獲取方式分為:
    (1) Pull Consumer
    積極主動地從消息代理(Broker)中拉取消息管毙,一旦批量消息被拉出腿椎,用戶應(yīng)用便啟動消息。
    (2) Push Consumer
    將拉動消息夭咬、消費(fèi)進(jìn)度和其它維護(hù)工作封裝起來啃炸,留下一個回調(diào)接口給最終用戶實(shí)現(xiàn),這個接口在消息到達(dá)時會被執(zhí)行卓舵。

  • Consumer Group
    消息消費(fèi)者組南用,同消息生產(chǎn)者組類似,將具有相同角色的消息消費(fèi)者組合在一起掏湾,相同角色可以理解為消費(fèi)同一類消息裹虫。

  • Topic
    Topic 是消息的邏輯分類。

  • Message
    Message 是發(fā)送的信息載體融击,Message 必須指定 Topic筑公,可以類比信件地址。Message 有一個可選的 Tag 設(shè)置便于過濾消息尊浪,還可以添加額外的鍵值對匣屡。

  • Message Queue
    Topic 會被分為一個或多個 Message Queue

  • Tag
    Tag 是 Topic 的進(jìn)一步細(xì)分,為用戶提供額外的靈活性际长。同一業(yè)務(wù)不同目的的消息可以擁有相同的 Topic 和不同的 Tag耸采。

  • Broker
    Broker 是 RocketMQ 系統(tǒng)主要組件,接收來自消息生產(chǎn)者的消息工育,存儲這些消息并為消息消費(fèi)者拉動這些消息做準(zhǔn)備虾宇,也存儲消息相關(guān)元數(shù)據(jù)。

  • Name Server
    Name Server 為消息生產(chǎn)者和消費(fèi)者提供路由信息如绸。

  • Message Model
    消息模型:集群(Clustering)和廣播(Broadcasting)

  • Message Order
    消息順序:順序(Orderly)和并發(fā)(Concurrently)

RocketMQ 架構(gòu)

此圖來自:http://rocketmq.apache.org/docs/rmq-arc/

RocketMQ 架構(gòu)圖中展示了四個集群:

  • NameServer 集群
    提供輕量級的服務(wù)發(fā)現(xiàn)及路由嘱朽,每個 NameServer 記錄完整的路由信息,提供相應(yīng)的讀寫服務(wù)怔接,支持快速存儲擴(kuò)展搪泳。有些其它開源中間件使用 ZooKeeper 實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)及路由功能,如 Apache Kafka扼脐。
    NameServer是一個功能齊全的服務(wù)器岸军,主要包含兩個功能:
    (1) Broker 管理,接收來自 Broker 集群的注冊請求瓦侮,提供心跳機(jī)制檢測 Broker 是否存活
    (2) 路由管理艰赞,每個 NameServer 持有全部有關(guān) Broker 集群和客戶端請求隊(duì)列的路由信息

  • Broker 集群
    通過提供輕量級的 Topic 和Queue 機(jī)制處理消息存儲。同時支持推(Push)和拉(Pull)兩種模型肚吏,包含容錯機(jī)制方妖。提供強(qiáng)大的峰值填充和以原始時間順序累積數(shù)千億條消息的能力。此外還提供災(zāi)難恢復(fù)罚攀,豐富的指標(biāo)統(tǒng)計(jì)數(shù)據(jù)和警報機(jī)制党觅,這些都是傳統(tǒng)的消息系統(tǒng)缺乏的雌澄。
    Broker 有幾個重要的子模塊:
    (1) 遠(yuǎn)程處理模塊,Broker 入口杯瞻,處理來自客戶端的請求
    (2) 客戶端管理镐牺,管理客戶端(包括消息生產(chǎn)者和消費(fèi)者),維護(hù)消費(fèi)者的主題訂閱
    (3) 存儲服務(wù)魁莉,提供在物理硬盤上存儲和查詢消息的簡單 API
    (4) HA 服務(wù)任柜,提供主從 Broker 間數(shù)據(jù)同步
    (5) 索引服務(wù),通過指定鍵為消息建立索引并提供快速消息查詢

  • Producer 集群
    消息生產(chǎn)者支持分布式部署沛厨,分布式生產(chǎn)者通過多種負(fù)載均衡模式向 Broker 集群發(fā)送消息。

  • Consumer 集群
    消息消費(fèi)者也支持 Push 和 Pull 模型的分布式部署摔认,還支持集群消費(fèi)和消息廣播逆皮。提供了實(shí)時的消息訂閱機(jī)制,可以滿足大多數(shù)消費(fèi)者的需求参袱。

有關(guān)架構(gòu)圖中集群間交互方式的說明:
(1) Broker Master 和 Broker Slave 是主從結(jié)構(gòu)电谣,會執(zhí)行數(shù)據(jù)同步 Data Sync
(2) 每個 Broker 與 NameServer 集群中所有節(jié)點(diǎn)建立長連接,定時注冊 Topic 信息到所有 NameServer
(3) Producer 與 NameServer 集群中的其中一個節(jié)點(diǎn)(隨機(jī))建立長連接抹蚀,定期從 NameServer 獲取 Topic 路由信息剿牺,并與提供 Topic 服務(wù)的 Broker Master 建立長連接,定時向 Broker 發(fā)送心跳
(4) Producer 只能將消息發(fā)送到 Broker Master环壤,但是 Consumer 同時和提供 Topic 服務(wù)的 Master 和 Slave 建立長連接晒来,既可以從 Master 訂閱消息,也可以從 Slave 訂閱消息郑现。

有關(guān) RocketMQ 的更多資料可以參看:
Apache RocketMQ
RocketMQ on Github
阿里中間件團(tuán)隊(duì)博客之十分鐘入門 RocketMQ

下一篇:RocketMQ 安裝部署及運(yùn)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湃崩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子接箫,更是在濱河造成了極大的恐慌攒读,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辛友,死亡現(xiàn)場離奇詭異薄扁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)废累,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門邓梅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人九默,你說我怎么就攤上這事震放。” “怎么了驼修?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵殿遂,是天一觀的道長诈铛。 經(jīng)常有香客問我,道長墨礁,這世上最難降的妖魔是什么幢竹? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮恩静,結(jié)果婚禮上焕毫,老公的妹妹穿的比我還像新娘。我一直安慰自己驶乾,他們只是感情好邑飒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著级乐,像睡著了一般疙咸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上风科,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天撒轮,我揣著相機(jī)與錄音,去河邊找鬼贼穆。 笑死题山,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的故痊。 我是一名探鬼主播顶瞳,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼崖蜜!你這毒婦竟也來了浊仆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤豫领,失蹤者是張志新(化名)和其女友劉穎抡柿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體等恐,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洲劣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了课蔬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囱稽。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖二跋,靈堂內(nèi)的尸體忽然破棺而出战惊,到底是詐尸還是另有隱情,我是刑警寧澤扎即,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布吞获,位于F島的核電站况凉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏各拷。R本人自食惡果不足惜刁绒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烤黍。 院中可真熱鬧知市,春花似錦、人聲如沸速蕊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽规哲。三九已至奢入,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間媳叨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工关顷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糊秆,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓议双,卻偏偏與公主長得像痘番,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子平痰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

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