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

2022-07-01 19:39:07 字數 543 閱讀 8934

1、為什麼要使用訊息佇列?

(1)解耦

傳統模式的缺點:系統間耦合性太強,如上圖所示,系統a在**中直接呼叫系統b和系統c的**,如果將來d系統接入,系統a還需要修改**,過於麻煩!

中介軟體模式:將訊息寫入訊息佇列,需要訊息的系統自己從訊息佇列中訂閱,從而系統a不需要做任何修改。

(2)非同步

傳統模式缺點:一些非必要的業務邏輯以同步的方式執行,太耗時間。

中介軟體模式:將訊息寫入訊息佇列,非必要的業務邏輯以非同步的方式執行,以加快響應速度

(3)削峰

傳統模式缺點:併發量大的時候,所有的請求直接懟到資料庫,造成資料庫連線異常

中介軟體模式:系統a慢慢的按照資料庫能處理的併發量,從訊息佇列中慢慢拉取訊息。在生產中,這個短暫的高峰期積壓是允許的。

2、使用了訊息佇列會有什麼缺點?

分析:乙個使用了mq的專案,如果連這個問題都沒有考慮過,就把mq引進去了,那就給自己的專案帶來了風險。我們引入乙個技術,要對這個技術的弊端有充分的認識,才能做好防禦。

系統的可用性降低:如果訊息佇列掛了,那麼系統也會受到影響

為什麼要使用訊息佇列

參考 訊息佇列本身有確認訊息被正確消費的機制 4.2message acknowledgment訊息確認 為了保證資料不被丟失,rabbitmq支援訊息確認機制,為了保證資料能被正確處理而不僅僅是被consumer收到,那麼我們不能採用no ack,而應該是在處理完資料之後傳送ack.在處理完資料之...

為什麼要使用訊息佇列?

在實際的專案實踐中,訊息佇列有的使用還是比較常用的,有時在想訊息佇列的好處是什麼,使用mq能帶來什麼好處。在說之前,目前市場主流的幾種mq activemq,rabbitmq,rocketmq,kafka 關於mq的入門就不說了,可以找下教程,寫個demo測試一下就好了,還是比較簡單的。先上張圖了解...

為什麼要使用訊息佇列

緩衝和削峰 上游資料時有突發流量,下游可能扛不住,或者下游沒有足夠多的機器來保證冗餘,kafka在中間可以起到乙個緩衝的作用,把訊息暫存在kafka中,下游服務就可以按照自己的節奏進行慢慢處理。解耦和擴充套件性 專案開始的時候,並不能確定具體需求。訊息佇列可以作為乙個介面層,解耦重要的業務流程。只需...