RocketMQ 簡介

2023-07-12 16:29 更新

RocketMQ是阿里開源的一款高性能、高可靠、高實(shí)時(shí)的分布式消息中間件, 目前已經(jīng)捐贈給Apache基金會,現(xiàn)在已成為 Apache 頂級孵化項(xiàng)目?! ?/p>

Rocketmq 解決哪些問題?

  • Publish/Subscribe(發(fā)布訂閱模式)是消息中間件的最基本功能,RocketMQ也是支持的。
  • 消息優(yōu)先級RocketMQ 所有消息是持久化消息,因此不可能按照優(yōu)先級來排序, 這樣對于系統(tǒng)的開銷會很大,因此RocketMQ是通過定義不同的隊(duì)列來實(shí)現(xiàn), 例如,可以創(chuàng)建普通隊(duì)列,優(yōu)先級高的隊(duì)列, 將不同優(yōu)先級發(fā)送到不同隊(duì)列即可。
  • 消息有序消費(fèi),就是消息按發(fā)送的順序來消費(fèi)消息
  • 消息過慮消息過慮支持兩種形式
    1. Broker端消息過濾, 優(yōu)點(diǎn)是減少了對于Consumer無用消息的網(wǎng)絡(luò)傳輸; 缺點(diǎn)是增加了Broker的負(fù)擔(dān),實(shí)現(xiàn)相對復(fù)雜。
    2. Consumer端消息過濾 這種過濾方式可由應(yīng)用完全自定義實(shí)現(xiàn),但是缺點(diǎn)是很多無用的消息要傳輸?shù)紺onsumer端。
  • 消息持久化
  • 支持分布式事務(wù),目前還除了RocketMQ支持,其它的消息隊(duì)列沒有看到有實(shí)現(xiàn)這個(gè)功能!

當(dāng)然 RocketMQ 解決的問題還有很多,這里不再一一介紹!

RocketMQ 邏輯部署結(jié)構(gòu)

RocketMQ 邏輯部署圖

如上圖所示,RocketMQ的邏輯部署結(jié)構(gòu)有Producer和Consumer兩個(gè)特點(diǎn)。

  • Producer Group (消息生產(chǎn)者組)用來表示一個(gè)發(fā)送消息應(yīng)用,一個(gè)Producer Group下包含多個(gè)Producer實(shí)例, 可以是多臺機(jī)器,也可以是一臺機(jī)器的多個(gè)進(jìn)程,或者一個(gè)進(jìn)程的多個(gè)Producer對象。 一個(gè)Producer Group可以發(fā)送多個(gè)Topic消息,Producer Group作用如下: 標(biāo)識一類Producer 可以通過運(yùn)維工具查詢這個(gè)發(fā)送消息應(yīng)用下有多個(gè)Producer實(shí)例發(fā)送分布式事務(wù)消息時(shí), 如果Producer中途意外宕機(jī),Broker會主動回調(diào)Producer Group內(nèi)的任意一臺機(jī)器來確認(rèn)事務(wù)狀態(tài)。
  • Consumer Group (消息消費(fèi)者級)用來表示一個(gè)消費(fèi)消息應(yīng)用,一個(gè)Consumer Group下包含多個(gè)Consumer實(shí)例, 可以是多臺機(jī)器,也可以是多個(gè)進(jìn)程,或者是一個(gè)進(jìn)程的多個(gè)Consumer對象。 一個(gè)Consumer Group下的多個(gè)Consumer以均攤方式消費(fèi)消息, 如果設(shè)置為廣播方式,那么這個(gè)Consumer Group下的每個(gè)實(shí)例都消費(fèi)全量數(shù)據(jù)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號