使用MQ訊息佇列的優缺點

2021-09-27 02:06:57 字數 1482 閱讀 4545

## 首先要知道,為什麼要用mq,說白了就是以下3點

**就是乙個系統或者乙個模組,呼叫了多個系統或者模組,互相之間的呼叫很複雜,維護起來很麻煩。其實這個呼叫是不需要直接同步呼叫介面的,   皆可以用mq給他非同步化解耦。**

比如 : 像如圖所示 a系統和其他系統沒有直接的關聯 那我們進行擴充套件的時候也會更靈活

如圖所示  ,  不用訊息佇列的時候,你的每個請求都要進過資料庫,但資料庫效能有限,這時候你的**就會有效能瓶頸,但是如果你加入訊息佇列就會不一樣,傳送請求給應用伺服器然後給訊息佇列,然後直接返回,由訊息佇列非同步寫入資料庫,提公升效能
如果使用了 訊息佇列

效能提公升一倍

1》 系可用性降低****:引入的依賴越多,越容易掛掉

比如圖1中的mq分布式訊息佇列一旦宕機  ,你整個服務就jj了**
2 》 系統複雜性提高:強行使用mq 會有出現 訊息丟失,訊息重複消費,訊息順序不對**

比如 a系統發生訊息給b系統,但b系統沒有及時會有 這個時候你怎麼辦?  重發?還是算失敗?

一般為了訊息一定被消費,我們一般選擇重新傳送,這樣一來就會出現 重複消費

還有 比如 你上某寶買東西,正確的順序應該是 下單 ——----》 付錢---》生成訂單

一共3條訊息 ,就會涉及到 ,3條訊息傳送給3個系統 ,一旦順序不對就會出問題,中間要是網路不好還會出現訊息丟失的情況

3》一致性問題:乙個系統處理完了直接返回成功了,就會以為這請求處理是成功的;但是實際上是,另外的系統那裡,可能某幾個系統寫庫成功了,結果有個系統寫庫失敗了,容易導致資料不一致。

比如 :  還是拿某寶下單的列子 ,使用者傳送請求給mq 然後返回下單成功 ,這個時候以為是成功,

但mq還要呼叫 庫存系統,金額系統,訂單系統,一旦某個系統出息訊息失敗,就會導致明明下單了,錢也扣了,但庫存就是不減少。

----------------------------------最後總結

mq  能一定程度提高你的效能 ,但也會引入很多坑 ,所以  mq有風險,使用需謹慎,  後面給大家分享  怎麼針對這些問題做一些補償,每個mq的

補償都不一樣,會說說一些常用的 比如 rocketmq kafaka rabbitmq activemq 他們是怎麼解決這些問題的 好 下次見 我是killer

引入MQ訊息佇列的作用及其優缺點

一 系統中為什麼需要用到訊息佇列,使用訊息佇列有什麼優點?使用訊息佇列的優點很多,這裡就說比較重要的三個優點 解耦 非同步 削峰填谷。解耦 首先引入乙個場景 系統a作位乙個介面請求方,現在需要向b c d三個系統傳送請求,這個時候呢a系統不需要傳送請求給d系統了,而需要傳送請求給e系統,那麼在a系統...

為什麼要使用訊息佇列以及訊息佇列的優缺點

1 為什麼要使用訊息佇列?1 解耦 傳統模式的缺點 系統間耦合性太強,如上圖所示,系統a在 中直接呼叫系統b和系統c的 如果將來d系統接入,系統a還需要修改 過於麻煩!中介軟體模式 將訊息寫入訊息佇列,需要訊息的系統自己從訊息佇列中訂閱,從而系統a不需要做任何修改。2 非同步 傳統模式缺點 一些非必...

訊息佇列有什麼優缺點?

當前位置 home mq 訊息佇列有什麼優缺點?特性activemq rabbitmq rocketmq kafka 單機吞吐量 萬級,比 rocketmq kafka 低乙個數量級 同 activemq 10 萬級,支撐高吞吐 10 萬級,高吞吐,一般配合大資料類的系統來進行實時資料計算 日誌採集...