消息隊列(mq)可應用在多個領域,包括異步通信解耦、企業解決方案、金融支付、電信、電子商務、快遞物流、廣告營銷、社交、即時通信、移動應用、手遊、視訊、物聯網、車聯網等。近期,消息隊列(mq)推出順序消息消息、mqtt移動物聯套件、kafka企業級消息服務。下述内容将解析消息隊列(mq)順序消息、車聯網、kafka企業級消息服務的應用場景。
普通消息:最大4m,消息越小,性能越高
事務消息:兩階段送出、解決分布式事務問題
定時消息:消息的延時或者定時投遞;最長40天
順序消息:全局順序、分區順序;嚴格保證消息的順序
基于釋出訂閱模型,分布式應用異步解耦,可以增加應用的水準擴充性,增加前端應用快速客戶反應能力。
大促等流量洪流突然來襲時,mq可以緩沖突發流量,避免整個系統崩潰。
做為重要日志的監控通信管道,将應用日志監控對系統性能影響降到最低。
消息隊列秉持開放、共享的原則擁抱開源生态,無技術綁定,2016年阿裡巴巴正式宣布将 mq 核心引擎 rocketmq 捐贈給 apache 軟體基金會;與此同時,全面融合 kafka 生态,做到無縫遷移,打造更安全、更可靠、更易運維的 kafka 企業級消息服務。
此次我們總結了幾款業界主流消息中間件産品的對比報告:
項目
消息隊列(mq) & kafka 企業級消息服務
apache rocketmq(開源)
apache kafka(開源)
rabbitmq(開源)
安全防護
√
×
主子賬号支援
low latency
定時消息
√(支援秒級,最長可支援40天)
√(隻支援18個固定level)
事務消息
√(支援ha)
√(不支援ha)
全鍊路消息軌迹
消息堆積查詢
消息回溯
可靠性
非常好,99.99999999%
好
一般
可用性
非常好,99.99%,always writable
性能(正常 < 128位元組 )
非常好 ~= 50w/sec
非常好 ~= 50w/sec
非常好 ~= 23w/sec
一般 ~= 6w/sec
性能(萬級topic場景)
非常好
低
性能(海量消息堆積場景)
最大隊列數(理論值)
~= 10w
~= 1k
服務支援
阿裡雲平台統一運維
使用者運維成本高
消息隊列(mq)提供 mq-mqtt 移動物聯套件,連接配接端(如移動裝置、智能家電、汽車、機器人等)和雲,實作雙向通信,可支撐億級裝置連接配接與百萬消息并發;
一般來說車聯網系統是一個端到雲的多層體系,其資料流主要分為2類:
資料上行采集:安裝在車輛等執行部件上的傳感器采集狀态資料後,定期上傳到服務端進行分析和應用。其特點是,車輛和傳感器種類衆多,基數大,移動資料網絡大多走4g,不如固定網絡穩定。
指令下行推送:遠端服務端根據設定,下行推送控制指令資料,控制指定的用戶端進行某些行為。
為什麼選擇消息隊列 mqtt 移動物聯套件
接入簡單:提供了标準的 mqtt 物聯網協定,支援多語言跨平台,接入更簡單。
多協定支援:支援自定義協定,包括車聯網領域衆多終端協定,例如國标808,新能源國标協定等等。
安全靈活:支援裝置級身份校驗和ssl加密,資料傳輸更安全。同時可支援第三方認證體系,更靈活。
服務穩定:消息隊列服務于整個阿裡巴巴集團已超過8年,經過阿裡巴巴交易核心鍊路反複打磨與曆年雙十一嚴苛考驗,是個低延遲、高并發、高可用、高可靠,可支撐萬億級資料洪峰的分布式消息中間件。
生态豐富:消息隊列擁抱開源,無技術綁定,無縫對接 kafka 生态以及各種流計算引擎與監控系統,實作大資料分析與營運。
下面,将介紹消息隊列(mq)新推出的順序消息的應用場景:
在金融行業中,外彙/證券交易有一個順序性原則:1. 價格優先 2.時間優先,價格不同則價格優先,價格相同則時間優先;很明顯,在這種情況下,買賣交易雙方都是有嚴格順序性的。消息隊列的順序消息可以很好的處理此類場景。
比如外彙交易中,可以指定不同的topic對應不同的外彙兌換币種交易,同一類外彙兌換币種交易時采用全局順序消息。
在電商領域裡面,每天都會有大量的交易發生,萬萬億條資料已無法通過單一執行個體資料庫進行處理,是以都會對資料庫進行拆分,根據特定的key進行分庫分表。為了提高資料更新與查詢的效率,盡可能的避免全庫全表掃描,買家庫會根據買家id進行拆分,賣家庫則需要根據賣家id進行拆分。那麼,由此就會産生多種不同次元的資料異構複制的場景。
異構資料複制的過程中,目标資料庫的資料必須嚴格按照源資料庫中資料的增、删、改順序才能保證資料的正确性。消息隊列的分區順序就可以很好的解決此類場景。
全局順序為了嚴格保證順序,消息的釋出與訂閱都必須是單并發,這會導緻性能受到單并發的影響。而分區順序則則可以根據分區的數量進行并發處理,進而提高整體的性能。由于在訂單交易過程中,不同賣家的交易訂單是不會有順序關聯的,隻有在相同賣家、相同訂單的情況下才必須保證順序。是以,我們可以根據 seller_id 進行分區。
消息隊列提供的 kafka 企業級消息服務包括以下特點:
業務系統基于現有的 kafka 代碼與生态進行開發,無需任何改造,即可無縫遷移到阿裡雲消息隊列(mq)提供的 kafka 消息服務。
消息隊列(mq)提供的 kafka 消息服務利用 sasl 機制對使用者身份進行認證,并利用 ssl 對通道進行加密,提供更加安全的消息服務;
消息持久化落盤到消息隊列,支援數多副本以及主備自動切換,可靠性達99.99999999%,服務可用性高達99.9%。
支援在萬級topic,以及海量的消息堆積的情況下,也始終保持超高的性能。
提供一整套包括資源申請、資源授權、消息堆積查詢、消息全鍊路軌迹、監控告警等運維服務,提升使用者的産品體驗。
使用者可以通過 kafka client 發送消息,mq client 訂閱消息,反之亦然,真正做到消息隊列(mq)與 kafka 消息完全互通。
<a href="https://www.aliyun.com/aliware">前往領取消息隊列(mq)新手禮券(開通後不可領取)</a>
<a href="https://www.aliyun.com/product/ons">檢視消息隊列(mq)産品詳情</a>
<a href="https://page.aliyun.com/form/aliware_mq_product_application/pc/index.htm">申請mq産品專家一對一咨詢</a>