主要是:解耦、非同步、削峰。
(1) 解耦: 例如,生產系統a系統傳送資料到b,c,d三個系統中,通過呼叫介面傳送。如果e系統也需要這個訊息呢?那如果c系統不需要這個訊息了呢?a系統與其他的系統產生嚴重的耦合。如果使用mq,a系統產生一條資料,傳送到mq中,哪個系統需要資料自己到mq裡面去消費。如果新系統需要資料直接從mq裡面消費即可;當某個系統不需要這條資料了,就取消讀資料的消費即可。這樣下來的話a系統壓根不需要考慮要給誰傳送資料,不需要維護這個**,也不需要考慮其他系統是否呼叫成功,失敗超時等情況。所以也不需要 直接同步呼叫介面的,因為mq直接將它給非同步解耦了。
沒有使用mq:
使用mq之後:
(2)非同步:a系統接收到乙個請求,需要在自己的本地寫庫,還需要在b,c,d三個系統中寫庫,b,c,d三個系統寫庫完畢返回給使用者。最終的請求總延時是a+b+c+d的時間,時間過長,導致使用者體驗不好。如果使用mq,那麼a系統直接傳送3條訊息到mq訊息佇列中,那麼a系統返回給使用者的資料是a+mq消耗2的時間,其他系統需要消費到mq中進行再將資料寫入到本地的庫中。大大提公升了使用者的體驗。
我們先看一下同步請求的弊端如下圖所示
下面我們看一下使用mq之後的示例圖:
(3)削峰:減少高峰期對伺服器的衝擊壓力。
MQ 的使用場景 一)
一 訊息佇列概述 訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用解耦,非同步訊息,流量削鋒等問題,實現高效能,高可用,可伸縮和最終一致性架構。目前使用較多的訊息佇列有activemq,rabbitmq,zeromq,kafka,metamq,rocketmq 二 訊息佇列應用場景 以下介紹訊...
聊聊mq的使用場景
通過非同步方式對系統解耦 增加系統的併發處理能力 以使用者註冊為例,一般情況下 註冊過程會呼叫4個服務 註冊服務 郵件服務 簡訊服務 積分服務 服務之間依賴性太強,任何乙個服務不可用,直接影響整個註冊業務 介面耗時太長,每個服務耗時100ms,註冊流程耗時400ms 對使用者來說,使用者資訊入庫是主...
為什麼要使用MQ,以及使用MQ的優缺點
為什麼要使用mq 1.解耦 比如a系統需要呼叫b系統的介面傳遞資料,然而當不需要被呼叫的時候,a系統需要重新打包部署到伺服器,這樣操作起來就很麻煩,用上mq之後,只需要管理mq的就顯得簡單的多 2.非同步 比如a系統呼叫b系統的介面,需要等到b系統的整個邏輯處理完之後,a系統才會繼續往下執行,響應變...