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