什麼是訊息中介軟體?主要作用是什麼?

2022-03-29 01:54:57 字數 2195 閱讀 6872

在了解中介軟體之前,我們先了解一下什麼是同步?

首先我們想一下,兩個公司之間如果有互相呼叫介面的業務需求,如果沒有引入中介軟體技術,是怎麼實現的呢?

使用者發起請求給系統a,系統a接到請求直接呼叫系統b,系統b返回結果後,系統a才能返回結果給使用者,這種模式就是同步呼叫。

所謂同步呼叫就是各個系統之間互相依賴,乙個系統傳送請求,其他系統也會跟著依次進行處理,只有所有系統處理完成後對於使用者來講才算完成了一次請求。只要其他系統出現故障,就會報錯給使用者。

那麼引入中介軟體後,是如何做到非同步呼叫的呢?

使用者發起請求給系統a,此時系統a傳送訊息給mq,然後就返回結果給使用者,不去管系統b了。然後系統b根據自己的情況,去mq中獲取訊息,獲取到訊息的時候可能已經過了1分鐘甚至1小時,再根據訊息的指示執行相應的操作。

那麼想一想,系統a和系統b互相之間是否有通訊?這種呼叫方式是同步呼叫嗎?

系統a傳送訊息給中介軟體後,自己的工作已經完成了,不用再去管系統b什麼時候完成操作。而系統b拉去訊息後,執行自己的操作也不用告訴系統a執行結果,所以整個的通訊過程是非同步呼叫的。

說到這裡,我們可以做個總結,訊息中介軟體到底是什麼呢?

其實訊息中介軟體就是乙個獨立部署的系統。可以實現各個系統之間的非同步呼叫。當然它的作用可不止這些,通過它可以解決大量的技術痛點,我們接下來會進行介紹。

訊息中介軟體,總結起來作用有三個:非同步化提公升效能、降低耦合度、流量削峰。

非同步化提公升效能

先來說說非同步化提公升效能,上邊我們介紹中介軟體的時候已經解釋了引入中介軟體後,是如何實現非同步化的,但沒有解釋具體效能是怎麼提公升的,我們來看一下下邊的圖。

沒有引入中介軟體的時候,使用者發起請求到系統a,系統a耗時20ms,接下來系統a呼叫系統b,系統b耗時200ms,帶給使用者的體驗就是,乙個操作全部結束一共耗時220ms。

如果引入中介軟體之後呢?看下邊的圖。

使用者發起請求到系統a,系統a耗時20ms,傳送訊息到mq耗時5ms,返回結果一共用了25ms,使用者體驗乙個操作只用了25ms,而不用管系統b什麼時候去獲取訊息執行對應操作,這樣比較下來,效能自然大大提高

降低耦合度

再來聊聊解耦的場景,看下圖。

如果沒有引入中介軟體,那麼系統a呼叫系統b的時候,系統b出現故障,導致呼叫失敗,那麼系統a就會接到異常資訊,接到異常資訊後肯定要再處理一下,返回給使用者失敗請稍後再試,這時候就得等待系統b的工程師解決問題,一切都解決好後再告知使用者可以了,再重新操作一次吧。

這樣的架構,兩個系統耦合再一起,使用者體驗極差。

那麼我們引入中介軟體後是什麼樣的場景呢,看下面的流程:

對於系統a,傳送訊息後直接返回結果,不再管系統b後邊怎麼操作。而系統b故障恢復後重新到mq中拉取訊息,重新執行未完成的操作,這樣乙個流程,系統之間沒有影響,也就實現了解耦。

流量削峰

下面我們再聊聊最後乙個場景,流量削峰

假如我們的系統a是乙個集群,不連線資料庫,這個集群本身可以抗下1萬qps

系統b操作的是資料庫,這個資料庫只能抗下6000qps,這就導致無論系統b如何擴容集群,都只能抗下6000qps,它的瓶頸在於資料庫。

假如突然系統qps達到1萬,就會直接導致資料庫崩潰,那麼引入mq後是怎麼解決的呢,見下圖:

引入mq後,對於系統a沒有什麼影響,給mq傳送訊息可以直接傳送1萬qps。

此時對於系統b,可以自己控制獲取訊息的速度,保持在6000qps一下,以乙個資料庫能夠承受的速度執行操作。這樣就可以保證資料庫不會被壓垮。

當然,這種情況mq中可能會積壓大量訊息。但對於mq來說,是允許訊息積壓的,等到系統a峰值過去,恢復成1000qps時,系統b還是在以6000qps的速度去拉取訊息,自然mq中的訊息就慢慢被釋放掉了。

這就是流量削峰的過程。在電商秒殺、搶票等等具有流量峰值的場景下可以使用這麼一套架構。

好了,本文對mq的講解就到這裡,本系列中介軟體專題將會逐步深入,帶你體驗mq的精髓之處。

什麼是中介軟體,中介軟體有什麼作用

什麼是中介軟體,中介軟體有什麼作用 文 花純春 http blog.csdn.net metababy 關於中介軟體這概念,能解釋得簡單明白的文章,我只找到一篇,也許是我太笨了,理解不了高深的,也可能是像國內寫技術教程的多數人一樣,只會粗糙的翻譯國外的,自己甚至沒有對其中的 進行過驗證,這樣的文章,...

什麼是訊息佇列中介軟體

1 什麼是訊息佇列中介軟體 模擬一下地鐵站的柵欄,多個入口提供服務,最終都歸到同乙個地鐵入口。如果乙個入口下雨積水了,其他入口也能提供服務。或者 或者 也可以注釋掉 只需要配置一行 如果配置 etc hosts檔案,一定記得重啟網絡卡 linux 下網絡卡重啟的命令為 etc init.d netw...

什麼是中介軟體

一 為什麼要中介軟體 計算機技術迅速發展。從硬體技術看,cpu速度越來越高,處理能力越來越強 從軟體技術看,應用程式的規模不斷擴大,特別是internet及www的出現,使計算機的應用範圍更為廣闊,許多應用程式需在網路環境的異構平台上執行。這一切都對新一代的軟體開發提出了新的需求。在這種分布異構環境...