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