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

 

 

1、什麼是消息中間件

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

2、爲何時候消息中間件

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

3、消息中間件方案

  1. 1.Java消息服務(Java Message Service)即JMS,是一個Java平臺中關於面向消息中間件的API,用於在兩個應用程序之間或分佈式中發送消息,進行異步通訊。
  2. 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的主要特徵是面向消息、隊列、路由、可靠性、安全

4、經常使用消息中間件

1.ActiveMQ

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

2.RabbitMQ

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

3.Kafka

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

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

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