優點:解耦、削峰、資料分發
缺點包含以下幾點:
系統可用性降低
系統引入的外部依賴越多,系統穩定性越差。一旦MQ當機,就會對業務造成影響。
如何保證MQ的高可用?
系統複雜度提高
MQ的加入大大增加了系統的複雜度,以前系統間是同步的遠端呼叫,現在是透過MQ進行非同步呼叫。
如何保證訊息沒有被重複消費?怎麼處理訊息丟失情況?那麼保證訊息傳遞的順序性?
一致性問題
A系統處理完業務,透過MQ給B、C、D三個系統發訊息資料,如果B系統、C系統處理成功,D系統處理失敗。
如何保證訊息資料處理的一致性?
特性 | ActiveMQ | RabbitMQ | RocketMQ | Kafka |
---|---|---|---|---|
開發語言 | Java | erlang | Java | Scala |
單機吞吐量 | 萬級 | 萬級 | 10萬級 | 10萬級 |
時效性 | ms | us | ms | ms |
可用性 | 高,主從架構 | 高,主從架構 | 非常高,分散式架構 | 非常高,分散式架構 |
功能特性 | 成熟產品,有較多文件,各種協議支援較好 | 基於erlang開發,併發能力很強,效能好,延時低,管理介面也很豐富 | MQ功能完備,擴充套件性好 | 只支援主要的MQ功能,像訊息查詢、訊息回溯等功能沒有提供,主要是為大資料準備,在大資料領域使用較廣 |
本作品採用《CC 協議》,轉載必須註明作者和本文連結