三分鐘白話RocketMQ系列—— 核心概念
白話3分鐘,快速了解RocketMQ基礎(chǔ),包括適用場景,以及基本概念。
看完如果不了解,歡迎來打我。
關(guān)鍵字摘要
- 低延遲、高可用、高可靠、高并發(fā) 的消息中間件
- 適合在線業(yè)務(wù)
- 分為producer、consumer、nameserver、broker等角色
- 另外還有主題(Topic)、隊列(MessageQueue)、消息(Message)、消費者組(ConsumerGroup)、訂閱關(guān)系(Subscription)等核心概念
Q1:RocketMQ是什么?
RocketMQ是一個開源的分布式消息中間件。它是一種 低延遲、高可用、高可靠、高并發(fā) 的消息隊列系統(tǒng),用于在分布式系統(tǒng)中進行異步通信。
Q2: 作為消息中間件,RocketMQ和kafka有什么區(qū)別?
作為消息中間件,RocketMQ和kafka的「消息模型」上比較相似,都有 生產(chǎn)、存儲(消息堆積)、消費 三大部分。
主要區(qū)別還是使用場景。
RocketMQ比kafka多了一些業(yè)務(wù)特性,比如 定時消息、延遲消息、事務(wù)消息(RocketMQ和kafka的不是同一個概念)、廣播消息、消息軌跡 等,所以我們一般把RocketMQ用在在線業(yè)務(wù)場景中。
而kafka由于大數(shù)據(jù)生態(tài)完善,在系統(tǒng)間的數(shù)據(jù)流管道、實時數(shù)據(jù)處理等場景中依舊占據(jù)優(yōu)勢。
當然,RocketMQ 5.x版本進一步強化了自身在 事件、流處理 場景上的結(jié)合。不過目前觀察,主要還是阿里云自身在做相關(guān)生態(tài)建設(shè)和應(yīng)用,業(yè)界落地上還不算主流。
Q3: RocketMQ的基本架構(gòu)是怎樣的?
RocketMQ 4.x基本架構(gòu)
RocketMQ 4.x版本中,主要分為4個角色:
- producer:發(fā)布消息的角色。Producer通過負載均衡模塊選擇相應(yīng)的 Broker 集群隊列進行消息投遞。
- consumer:消息消費的角色。提供實時訂閱消息的能力。
- broker:Broker主要負責(zé)消息的存儲、投遞和查詢以及服務(wù)高可用保證。
- nameserver:NameServer是一個簡單的 Topic 路由注冊中心。支持 Topic、Broker 的動態(tài)注冊與發(fā)現(xiàn)。
RocketMQ 5.x 為了更好適應(yīng)云原生環(huán)境下的「存算分離」,在部署架構(gòu)上做了一個變化。
新增無狀態(tài)的代理模塊Proxy,作為「計算層」,將 Broker 原來的協(xié)議適配、權(quán)限管理、消息管理等計算功能抽離到了代理模塊中。
而Broker 則專注于「存儲層」,主要負責(zé)消息存儲功能。
這樣在云環(huán)境下可以更好地進行資源調(diào)度。
RocketMQ 5.x基本架構(gòu)
Q4:RocketMQ有哪些核心概念?
RocketMQ核心概念
前面提到過,消息中間件的邏輯架構(gòu)上比較相似,都有消息 生產(chǎn)、存儲(消息堆積)、消費 三大部分。
就RocketMQ而言,核心概念也是圍繞這三個部分展開,7個核心概念:
- 消息生產(chǎn):
- 生產(chǎn)者(Producer):RocketMQ 中用于產(chǎn)生消息的實體。
- 消息存儲
主題(Topic):RocketMQ 消息傳輸和存儲的分組容器,主題內(nèi)部由多個隊列(MessageQueue)組成。
隊列(MessageQueue):RocketMQ 消息傳輸和存儲的實際單元容器,類比于kafka中的分區(qū)。
消息(Message):RocketMQ 的最小傳輸單元。在初始化發(fā)送和完成存儲后即不可變。
消息消費
消費者分組(ConsumerGroup):RocketMQ 發(fā)布訂閱模型中定義的獨立的消費身份分組,用于統(tǒng)一管理底層運行的多個消費者(Consumer)。
消費者(Consumer):RocketMQ 消費消息的運行實體。消費者必須被指定到某一個消費組中。
訂閱關(guān)系(Subscription):RocketMQ 發(fā)布訂閱模型中消息過濾、重試、消費進度的 持久化「規(guī)則配置」。消費組通過定義訂閱關(guān)系控制指定消費組下的消費者如何實現(xiàn)消息過濾、消費重試及消費進度恢復(fù)等。
總結(jié)
- 低延遲、高可用、高可靠、高并發(fā)的消息中間件。
- 適合在線業(yè)務(wù)。
- 分為producer、consumer、nameserver、broker等角色。
- 另外還有主題(Topic)、隊列(MessageQueue)、消息(Message)、消費者組(ConsumerGroup)、訂閱關(guān)系(Subscription)等核心概念。