概述
消息隊列作為高并發(fā)系統(tǒng)的核心組件之一义图,能夠幫助業(yè)務(wù)系統(tǒng)解構(gòu)提升開發(fā)效率和系統(tǒng)穩(wěn)定性。主要具有以下優(yōu)勢:
- 削峰填谷: 主要解決瞬時寫壓力大于應(yīng)用服務(wù)能力導(dǎo)致消息丟失转培、系統(tǒng)奔潰等問題
- 系統(tǒng)解耦: 解決不同重要程度硕糊、不同能力級別系統(tǒng)之間依賴導(dǎo)致一死全死
- 提升性能: 當(dāng)存在一對多調(diào)用時爽撒,可以發(fā)一條消息給消息系統(tǒng)嬉荆,讓消息系統(tǒng)通知相關(guān)系統(tǒng)
- 蓄流壓測: 線上有些鏈路不好壓測归敬,可以通過堆積一定量消息再放開來壓測
RocketMQ
Apache Alibaba RocketMQ 是一個消息中間件。消息中間件中有兩個角色:消息生產(chǎn)者和消息消費者鄙早。RocketMQ 里同樣有這兩個概念汪茧,消息生產(chǎn)者負(fù)責(zé)創(chuàng)建消息并發(fā)送到 RocketMQ 服務(wù)器,RocketMQ 服務(wù)器會將消息持久化到磁盤限番,消息消費者從 RocketMQ 服務(wù)器拉取消息并提交給應(yīng)用消費舱污。
RocketMQ 特點
RocketMQ 是一款分布式、隊列模型的消息中間件弥虐,具有以下特點:
- 支持嚴(yán)格的消息順序
- 支持 Topic 與 Queue 兩種模式
- 億級消息堆積能力
- 比較友好的分布式特性
- 同時支持 Push 與 Pull 方式消費消息
- 歷經(jīng)多次天貓雙十一海量消息考驗
RocketMQ 優(yōu)勢
前主流的 MQ 主要是 RocketMQ扩灯、kafka、RabbitMQ霜瘪,其主要優(yōu)勢有:
- 支持事務(wù)型消息(消息發(fā)送和 DB 操作保持兩方的最終一致性驴剔,RabbitMQ 和 Kafka 不支持)
- 支持結(jié)合 RocketMQ 的多個系統(tǒng)之間數(shù)據(jù)最終一致性(多方事務(wù),二方事務(wù)是前提)
- 支持 18 個級別的延遲消息(RabbitMQ 和 Kafka 不支持)
- 支持指定次數(shù)和時間間隔的失敗消息重發(fā)(Kafka 不支持粥庄,RabbitMQ 需要手動確認(rèn))
- 支持 Consumer 端 Tag 過濾,減少不必要的網(wǎng)絡(luò)傳輸(RabbitMQ 和 Kafka 不支持)
- 支持重復(fù)消費(RabbitMQ 不支持豺妓,Kafka 支持)