1. 程式人生 > >工作中感受到的訊息中介軟體在分散式系統中的使用場景

工作中感受到的訊息中介軟體在分散式系統中的使用場景

經歷

以前在qunar實習,第一次接觸訊息中介軟體,那時候概念還不清楚,朦朦朧朧有個初步認識,現在正式工作了,又一次接觸了訊息中介軟體,初步總結幾種場景。

場景

1.分散式系統中,不同系統之間傳遞訊息。
比如系統B要監聽系統A的訊息,當A發出訊息的時候,系統B根據訊息,做相應的變化。這個場景很容易理解,就是不同系統之間的非同步互動。
2.在系統A中,自己發訊息,自己監聽。這個場景是我在現在工作中遇見的,當時看到自己的系統監聽訊息,下意識就想,是哪個系統傳送的訊息呢?後來問了別人才知道,是自己系統發訊息,自己監聽。為什麼要這樣做,自己系統中,直接可以呼叫到自己內部的一些方法了呀?原來這樣做的原因有如下,首先,傳送訊息可以實現非同步做一些動作,比如我們對一些資訊做了修改,這些資訊要同步到另一個系統中,我們有一種方法是,在一個事務裡,做完修改就立刻呼叫另一個系統的modify方法,但是這樣有一個問題,如果這個事務中很多方法,很可能導致呼叫超時,或者我們這一個方法體中,有多個呼叫,會導致系統耦合性太強,如果我們通過傳送訊息的方式呼叫,就做到了在本方法體中減少了方法呼叫,呼叫移動到了訊息監聽者中。這樣不僅方法體中呼叫減少,而且做到了鬆耦合。
以上是在工作中的感悟,但是我有一個擔心,傳送訊息會不會導致訊息丟失,這樣的可靠性就需要一個高可靠的訊息中介軟體來保持了,有利有弊吧。