1. 程式人生 > >訊息中介軟體的使用場景

訊息中介軟體的使用場景

一般認為,採用訊息傳送機制/訊息佇列 的中介軟體技術,進行資料交流,用在分散式系統的整合。

為什麼使用訊息中介軟體

解決分散式系統之間訊息的傳遞。

電商場景:使用者下單減庫存,呼叫物流系統,系統擴充後服務化和業務拆分。系統互動,y一般用RPC(遠端過程呼叫)。如果系統擴充到有幾十個介面,訊息中介軟體來解決問題。

訊息中介軟體有些什麼使用場景

一、非同步處理

使用者註冊(50ms),還需傳送郵件(50ms)和簡訊(50ms)

序列:(150ms)使用者註冊—》傳送郵件----》傳送簡訊

並行(100ms):使用者註冊—》傳送郵件

a)        |----》傳送簡訊

訊息中介軟體(56ms):

使用者註冊(50ms)—》(6ms)訊息中介軟體《-----傳送郵件

                                                                   《-----傳送簡訊

說明:一個使用者註冊流程,包含下述業務:

1.        註冊處理以及寫資料庫、

2.        傳送註冊成功的手機簡訊

3.        傳送註冊成功的郵件資訊

我們使用老方法的話,則會註冊完執行傳送簡訊再執行郵件傳送。太low

一般使用的是:在註冊成功後,使用兩個執行緒去做傳送郵件,傳送簡訊操作。

如果用訊息中介軟體:則將兩個執行緒建立這些事情省了,直接傳送訊息給訊息中介軟體,然後讓郵件服務和簡訊服務自己去訊息中介軟體裡面去取訊息,然後取到訊息後再自己做對應的業務操作。就是這麼方便

二、應用的解耦

a)        訂單系統---》庫存系統(強耦合)

b)       訊息中介軟體:訂單系統---》訊息中介軟體《----庫存系統(解耦)

說明:使用者購買一筆訂單,訂單成交—》呼叫庫存系統—1---》返回給訂單系統,此時算一個正常業務。還有不正常的業務,就是使用者訂單完成後,訂單系統並不去滴啊用庫存系統-1操作,而是呼叫訊息中介軟體,寫入一個訂單資訊。又庫存系統自己去訊息中介軟體上去獲取,然後更新庫存,這樣能夠減少網際網路型應用追求的快這一個屬性。而庫存系統讀取訂單間庫存其實這個操作也是非常快的,所以有訊息中介軟體對解耦來說也是一個不錯的方向。

三、流量的削峰

a)        使用者請求-----》秒殺應用

b)        應用的前端加入訊息佇列

c)        使用者請求-----》訊息佇列《----秒殺應用

說明:比如,系統舉行秒殺活動,熱門商品。流量蜂擁而至 100件商品,10萬人擠進來怎麼辦,10萬秒殺的操作,放入訊息佇列。秒殺應用處理訊息佇列中的10萬個請求中的100個,其他的打回,通知失敗。流量峰值控制在訊息佇列處,秒殺應用不會瞬間被懟死.

四、日誌處理

a)        錯誤日誌---》訊息佇列《----日誌處理

b)        使用者行為日誌--》訊息佇列(kafka)《-----日誌的儲存或流式處理

說明:日誌處理 可能隨時kafka的強項,大資料的日誌處理非它莫屬,我沒用過,只知道它很強大。非常強大。

五、純粹的訊息通訊

後期將主要記錄:rabbitmq 應用場景以及相關知識