概述
消息隊列做爲高併發系統的核心組件之一,可以幫助業務系統解構提高開發效率和系統穩定性。主要具備如下優點:服務器
削峯填谷: 主要解決瞬時寫壓力大於應用服務能力致使消息丟失、系統奔潰等問題
系統解耦: 解決不一樣重要程度、不一樣能力級別系統之間依賴致使一死全死
提高性能: 當存在一對多調用時,能夠發一條消息給消息系統,讓消息系統通知相關係統
蓄流壓測: 線上有些鏈路很差壓測,能夠經過堆積必定量消息再放開來壓測網絡
Apache Alibaba RocketMQ 是一個消息中間件。消息中間件中有兩個角色:消息生產者和消息消費者。RocketMQ 裏一樣有這兩個概念,消息生產者負責建立消息併發送到 RocketMQ 服務器,RocketMQ 服務器會將消息持久化到磁盤,消息消費者從 RocketMQ 服務器拉取消息並提交給應用消費。併發
RocketMQ 是一款分佈式、隊列模型的消息中間件,具備如下特色:分佈式
支持嚴格的消息順序
支持 Topic 與 Queue 兩種模式
億級消息堆積能力
比較友好的分佈式特性
同時支持 Push 與 Pull 方式消費消息
歷經屢次天貓雙十一海量消息考驗高併發
目前主流的 MQ 主要是 RocketMQ、kafka、RabbitMQ,其主要優點有:性能
支持事務型消息(消息發送和 DB 操做保持兩方的最終一致性,RabbitMQ 和 Kafka 不支持)
支持結合 RocketMQ 的多個系統之間數據最終一致性(多方事務,二方事務是前提)
支持 18 個級別的延遲消息(RabbitMQ 和 Kafka 不支持)
支持指定次數和時間間隔的失敗消息重發(Kafka 不支持,RabbitMQ 須要手動確認)
支持 Consumer 端 Tag 過濾,減小沒必要要的網絡傳輸(RabbitMQ 和 Kafka 不支持)
支持重複消費(RabbitMQ 不支持,Kafka 支持)中間件