分佈式之消息中間件

分佈式之消息中間件

目錄
* 1.消息中間件概述
* 2.消息中間件使用場景
* 3.消息中間件原理
* 4.消息中間件傳遞模式
  * 4.1點對點模式(PTP)
  * 4.2發佈-訂閱模型(Pub/Sub)

1.消息中間件概述

  消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通信來進行分佈式系統的集成。通過提供消息傳遞和消息排隊模型,它可以在分佈式環境下擴展進程間的通信。消息中間件就是用在消息隊列服務器中用於過濾、區分和根據規則進行轉發的程序。
  目前在生產環境,使用較多的消息中間件有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等
  

2.消息中間件使用場景

  消息中間件適用於需要可靠的數據傳送的分佈式環境。
  採用消息中間件機制的系統中,不同的對象之間通過傳遞消息來激活對方的事件,完成相應的操作。
  
  消息中間件能在不同平臺之間通信,它常被用來屏蔽掉各種平臺及協議之間的特性,實現應用程序之間的協同,其優點在於能夠在客戶和服務器之間提供同步和異步的連接,並且在任何時刻都可以將消息進行傳送或者存儲轉發,這也是它比遠程過程調用更進一步的原因。

3.消息中間件原理

  要了解消息中間件的原理,先了解MOM(面向消息的中間件)。
  面向消息的中間件(MOM),提供了以鬆散耦合的靈活方式集成應用程序的一種機制。它們提供了基於存儲和轉發的應用程序之間的異步數據發送,即應用程序彼此不直接通信,而是與作爲中介的MOM通信。MOM提供了有保證的消息發送(至少是在儘可能地做到這一點),應用程序開發人員無需瞭解遠程過程調用(PRC)和網絡/通信協議的細節。
  消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通信來進行分佈式系統的集成。通過提供消息傳遞和消息排隊模型,它可以在分佈式環境下擴展進程間的通信。
  

4.消息中間件傳遞模式

4.1點對點模式(PTP)

  PTP模式包含消息隊列(Queue),發送者(Sender)。接收者(Receiver),每個消息都被髮送到一個特定的隊列,接收者從隊列中獲取消息。隊列保留着消息,而且隊列可以是持久的,以保證在消息服務出現故障時仍然能夠傳遞消息,直到他們被消費或超時。
  
PTP的特點:
- 每個消息只有一個消費者(cunsumes)(即一旦被消費,消息就不再在消息隊列中)
- 發送者和接收者之間在時間上沒有依賴性,也就是發送者發送消息後,不管接收者是否接收消息或者接收者服務是否在運行,都不會影響到消息被髮送到隊列
- 接收者在成功接收消息之後需向隊列應答成功

4.2發佈-訂閱模型(Pub/Sub)

  發佈-訂閱模型(Pub/Sub)包含三個角色:主題(Topic),發佈者(Publisher),訂閱者(Subscriber) 。多個發佈者將消息發送到Topic,系統將這些消息傳遞給多個訂閱者。
  
Pub/Sub的特點
- 每個消息可以有多個消費者
- 發送者和接收者之間在時間上存在依賴性,針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之後,才能消費發佈者的消息。
- 爲了消費消息,訂閱者必須保持運行的狀態。

  爲了緩和這樣嚴格的時間相關性,JMS允許訂閱者創建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發佈者的消息。
  如果希望發送的消息可以不被做任何處理、或者只被一個消息者處理、或者可以被多個消費者處理的話,那麼可以採用Pub/Sub模型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章