1. 程式人生 > >我對訊息中介軟體的理解

我對訊息中介軟體的理解

               

 

 什麼是Message Queue?

 提到訊息中介軟體,那麼首先就必須理解一下所謂的Message Queue。


 在平常的開發中,應用開發人員完全可以通過傳送和接受訊息的方式來方便的與應用程式進行可靠的通訊,並且訊息的處理為我們提供了方便的訊息傳遞和許多業務處理的可靠的防止故障的方法。


 但訊息傳遞與傳統的應用程式互動又有區別?最明顯的區別就是實時性了。Message Queue不適合實時性要求比較高的場景,因為Message Queue通過非同步的方式與server端進行互動,不用擔心server端的長時間處理過程。


 舉個例子,平常的應用程式之間的呼叫大部分都是通過暴漏介面的形式進行相互的呼叫,一旦業務複雜起來,介面之間的管理也會很麻煩。這時候如果通過Message Queue的方法的話,只要在需要的時候把訊息傳送到Queue Manage就可以,這時候Message Queue就成了嫁接各個系統之間的橋樑。


 上面也提到了實時性的問題,比如一個生成報表的功能,為了給使用者更好的體驗度,我們不可能讓使用者等待很長的時間,這時可以把對報表的處理使用MQ,客戶端只需要把必要的報表請求和一些必要的報表條件放置到Queue中處理,處理好後,再給使用者傳送一個訊息即可。


 下面也簡單的介紹幾個專業的術語?

 訊息:兩臺計算機之間傳送的資料單位,例如字串、文字等


 訊息佇列:訊息的容器,用於在訊息傳遞的過程中儲存訊息的容器,充當訊息源和目標之間的中間橋樑。佇列的只要目的就在於提供路由保證訊息的傳遞。


 訊息佇列網路:是指能夠相互之間傳送訊息的一組計算機。網路中不同的計算機在訊息處理過程中扮演者不同的角色,有的是傳送者,有的是接受者。


 訊息中介軟體簡介?

 上面對訊息佇列有了一定的瞭解,那麼訊息中介軟體利用高效可靠的訊息傳遞機制進行平臺無關的資料交流,並基於資料通訊來進行分散式系統的整合。通過提供訊息傳遞和訊息排隊模型,可以再分散式環境下擴充套件程序間的通訊。

 那麼對於訊息中介軟體,常見的角色大致也就有Producer(生產者)、Consumer(消費者)、Broker(中轉角色),有這麼幾個主要的角色,那麼訊息中介軟體能為我們帶來那些功能呢?


 1.Message Priority

 Producer把訊息傳送給Broker來儲存,那麼我們就可以再訊息佇列中對我們的訊息來進行排序,實現不同的優先順序。從而滿足我們複雜的業務需求。


 2.Message Order

 訊息排序,有的訊息的處理是需要按照一定的順序進行處理的,比如使用者的建立訂單、訂單付款、訂單完成。那麼對於消費者也需要按照這個流程來消費,否則就沒有意義了。


 3.Message Filter


 在訊息對立中,也可以對我們的訊息進行過濾,比如按照訊息型別等條件來過濾


 4.Message Persistence


 訊息的持久化,一般有以下幾種方式

 (1)持久化到資料庫,比如mysql

 (2)持久哈到KV儲存,比如redis

 (3)檔案形式持久化

 訊息的持久化,防止了系統掛掉後,仍然能夠從之前備份中恢復出來。


 5.Broker的Buffer滿了怎麼辦?


 我們知道Broker是用來儲存需要處理的訊息,如果訊息過多,導致Buffer滿了怎麼辦?

 這時候就會採取一定的策略來丟棄已有的訊息。


 6.事務的支援


 正如上面所談到的訂單的操作,因此訊息中介軟體中也會提供對分散式事務的支援。


 7.定時訊息


 在實際應用中,有時也會需要定時消費的功能,因此中介軟體中,也會對訊息進行排序,然後實現定時傳送或者消費訊息的業務需求。


 8.訊息重試

 考慮一下這個問題,如果訊息消費失敗後,怎麼辦,是等待處理這個訊息呢?還是讓消費者在此消費一次呢?通常情況下,採取後者的形式,因為大多數情況下,消費失敗的原因在於該訊息本身的原因,如果在此消費這個訊息的話,還是會出現失敗的情況,因此通常採取在此傳送訊息在此消費訊息的方式。


 9.回溯消費

 什麼是回溯消費呢?對於已經消費成功的訊息,是不是在Broker中就丟棄該訊息呢?顯而易見是不可能的,因此需要中介軟體對該功能支援,支援已經消費的資訊進行時間段內的儲存,等待某一刻內該訊息會被重新消費的可能。







           

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net

這裡寫圖片描述