消息中間件系列之簡單介紹


一、什么是消息中間件

關注於數據的發送和接收,利用高效可靠的異步消息傳遞機制集成分布式系統。

二、為什么時候消息中間件

1.解耦合
2.異步
3.橫向擴展
4.安全可靠
5.順序保證

三、消息中間件方案

1.Java消息服務(Java Message Service)即JMS,是一個Java平台中關於面向消息中間件的API,用於在兩個應用程序之間或分布式中發送消息,進行異步通信。
2.AMQP(advanced message queuing protocol)是一個提供統一消息服務的應用層標准協議,基於此協議的客戶端與消息中間件可傳遞消息,並不受客戶端/中間件的不同產品,不同開發語言等條件限制。

JMS與AMQP對比

說明 JMS規范 AMQP協議
定義 java API wire-protocol
跨語言
消息類型 p2p,pub/sub direct,fanout,topic,headers,system
消息類型 TextMessage,MapMessage,BytesMessage,StreamMessage,ObjectMessage,Message byte[]
綜合評價 JMS定義了Java API層面的標准;在Java體系中,多個clietn均可以通過JMS進行交互,不需要應用修改代碼,但是其對跨平台的支持較差 AMQP的主要特征是面向消息、隊列、路由、可靠性、安全

四、常用消息中間件

1.ActiveMQ

1)多語言和協議客戶端。
語言:
Java、C、C++、C#、Ruby、Perl、Python、PHP
協議:
OpenWire、Stomp、REST、WS、XMPP、AMQP
2)完全支持JMS1.1和J2EE1.4規范(持久化,XA消息和事務)
3)虛擬主題、組合目的、鏡像隊列

2.RabbitMQ

1)多語言客戶端:
Java、Python、Ruby、C、PHP等
2)事務支持/發布確定
3)消息持久化

3.Kafka

一種高吞吐量的分布式發布訂閱消息系統,是一個分布式、分區的、可靠的分布式日志存儲服務。

3個消息中間件的綜合評價

說明 ActiveMQ RabbitMQ Kafka
跨語言 支持(Java優先) 與語言無關 支持(Java優先)
支持協議 OpenWire,Stomp,XMPP,AMQP AMQP
優點 遵循JMS規范,安裝部署方便 繼承Erlang天生的並發性,用於金融行業,穩定性,安全性有保障 依賴ZK,可動態擴展節點,高性能,高吞吐量,無線擴容,消息可指定追溯
缺點 會莫名丟失消息 Erlang語言難度較大,不支持動態擴展 嚴格的順序機制,不支持消息優先,不支持標准消息協議,不利於平滑遷移
總結 適合中小型企業級消息應用場景,不適合上千個隊列的應用 適合對穩定性要求高的企業級引用 一般應用在大數據日志處理或實時性,可靠性要求稍低的場景。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM