訊息中介軟體(1)

2022-07-11 00:21:09 字數 1902 閱讀 2044

​ 在深入了解訊息中介軟體之前,我想先搞清楚為什麼會出現訊息中介軟體這麼一款產品,換句話說我們需要弄清楚訊息中介軟體到底解決了乙個什麼問題。

​ 在網際網路的初級階段,那個時候一方面沒有想現在如此多的使用者,另一方面也沒有太複雜的業務場景,在那個階段,應用的架構往往是垂直式的,通俗的講就是在乙個工程中解決所有的問題。那麼從程序角度來看,在這一階段中所有的問題都在乙個程序中解決。在這樣的大背景下,乙個應用同樣會分層、會分模組,但是這樣的劃分往往是邏輯上的,從程序角度而言,模組之間的資料互動是通過程序內的函式呼叫,或者一些公共類來完成,這個階段的資料互動沒有太多複雜的要求也沒有太多複雜操作。

​ 隨著業務的發展,使用者數量越來越多,同時應用的業務場景也越來越複雜,應用的功能也越來越豐富,此時為了滿足業務發展需求同時提高開發效率,應用的各個模組開始拆分,每個模組開始獨立開發、獨立測試、獨立發布、獨立的下線。此時由於應用的複雜性可控,模組之間的資料互動可能是用一些restful的介面,也有可能使用的rpc方式,在這種方式下,模組之間的呼叫邏輯清晰,問題排查方便迅速,從程序角度看,模組之間的資料互動是不同程序之間的資料互動,而這些程序往往是不同節點上的程序,通過網路交換資料。

​ 隨著業務的進一步發展,越來越多的業務場景被挖掘出來,同時該應用的功能進一步的豐富,而傳統的模組之間使用rpc進行資料互動的方式越來越制約業務的發展,例如,新增乙個業務模組,會造成大量的模組進行改造,增加rpc呼叫介面,同時某乙個模組下線也需要大動干戈的對其他模組進行改造,在這種大背景下,模組之間通過rpc進行資料互動的複雜度完全失控,模組的上線,下線都將會涉及到大規模的其他模組的改造。

​ 在計算機的世界中,沒有什麼問題不是乙個中間層不能解決的,如果有,那就再加一層。依據這個思路,模組之間的資料互動可以通過增加乙個第三方的中間層來解決,這個第三方就是訊息中介軟體。

​ 上一節我們分析了為什麼會出現訊息中介軟體,那麼對於訊息中介軟體的職責這個問題的答案就呼之欲出。對於一款訊息中介軟體而言,它最基本的功能就是負責模組之間的訊息互動。但是這個最基本的功能卻不像它看起來那麼簡單。

​ 在目前的微服務結構中,某些模組之間的資料互動由訊息中介軟體來承擔,從訊息中介軟體的角度而言,它負責從訊息的生產方拿到訊息,再將訊息投遞到訊息的消費放,在這個環節中訊息的生命週期如下,1、訊息被生產者生產,2、訊息被生產者投遞,3、訊息在訊息佇列中儲存,4、訊息被訊息佇列交付,5、訊息被消費者消費。在訊息的生命週期中2、3、4都和訊息佇列相關,因此訊息中介軟體一般需要如下的幾個功能。

​ 1、高可用。訊息中介軟體應當盡量避免發生宕機問題,否則會影響到整個系統的可用性。訊息中介軟體宕機,則生產者和消費者完全失去了資料互動的途徑。

​ 2、具備穩定的交付投遞能力,訊息在從生產者投遞到訊息中介軟體的過程中訊息的狀態不應該出現二義性,要麼已經投遞,要麼投遞失敗,同理訊息在從訊息中介軟體交付到消費者的過程中也不應當存在二義性。

​ 3、具備一定的訊息積壓能力,一般而言生產者的處理能力和消費者的處理能力不一定匹配,在這個過程中很可能會出現訊息大量的堆積在訊息中介軟體的佇列中,訊息中介軟體需要具備訊息堆積能力,並且在這個場景下仍要保證訊息中介軟體的效能。

​ 4、訊息的固化能力,訊息中介軟體的本職工作是架起生產者和消費者的橋梁,因此在理論上訊息中介軟體不應當出現丟訊息的現象,就算在某些不得已的場景下需要丟棄部分訊息,也需要某些類似重傳的機制。

​ 在訊息中介軟體的的模型中一般存在一下幾個基本角色:

​ 1、生產者。生產者負責產生訊息並將訊息投遞到訊息佇列

​ 2、訊息的儲存管理佇列。訊息在被投遞後,一般在此處暫存,等待交付

​ 3、訊息的消費者。消費者負責消費訊息,

​ 一般而言除了以上三種最基本的角色外,為了完善訊息佇列的功能,還會存在下列角色

​ 訊息佇列的協調者,該角色負責協調訊息的儲存佇列,一般而言,生產者和消費者從協調者處得到訊息儲存佇列的相關資訊,從而和訊息儲存佇列進行互動。該角色還監控檢查訊息儲存佇列的狀態。

訊息中介軟體

1.訊息的優先順序 2.訊息排序 3.訊息過濾 4.訊息持久化 5.訊息重試 6.事務的支援 7.broker滿 生產者,佇列,消費者 訊息佇列的優點 1 解耦2 非同步訊息,系統響應 在jms中,有兩種訊息模型 點對點模式和發布訂閱模式。1.在點對點模式中 有三種角色 1 訊息佇列,傳送者,接受者...

訊息中介軟體

如何理解訊息中介軟體?訊息中介軟體是儲存訊息的乙個容器,與資料庫不同的是資料庫儲存的資料是可以被修改的,而訊息中介軟體一般不會被修改 訊息中介軟體在消費的生產者與消費者產生,相當於乙個中間人的角色,提供了路由保證訊息的傳遞,如果消費者不能及時接收,訊息會保留下來,知道消費者上線 保證在存活期內 訊息...

訊息中介軟體

訊息中介軟體是在訊息的傳輸過程中儲存訊息 訊息傳遞過程中不能更改 的容器。訊息中介軟體再將訊息從它的原中繼到它的目標時充當中間人的作用。訊息中介軟體的主要目的是提供路由並保證訊息的傳遞 如果傳送訊息時接收者不可用,訊息佇列會保留訊息,知道可以成功傳遞為止,當然,訊息佇列儲存訊息也是有期限的。訊息傳送...