1. 程式人生 > >為什麼要用MQ

為什麼要用MQ

現在公司系統在做微服務化,很多人在設計服務間通訊時都會想到用MQ,然而有些人居然說不清楚為啥要用MQ?

其實用它主要是兩點考慮:

1、應用解耦:兩個服務間通過MQ通訊,可以不用完全知道對方的存在,實現多生產者、多消費者通訊。比如使用者服務在有增、刪、改時將通知發給MQ,其它關心使用者變更的服務訂閱MQ這個通知即可,使用者服務不用關心要向哪些服務傳送變更通知,其它服務也不用關心向哪個使用者服務例項獲取通知。

2、流量削峰:將使用者或其它服務的請求放到MQ中,服務在有處理能力時從MQ佇列中取出處理,然後根據需要再將結果通知放到MQ中,關心處理結果的服務訂閱這個通知即可。比如我們在很多應用中都有接受手機驗證碼的場景(60s後才能重新獲取新的驗證碼),就是使用者傳送驗證請求後,主服務將要驗證的請求寫入MQ然後立即返回,驗證碼服務從MQ中取出驗證請求處理給使用者傳送驗證碼。這樣處理更穩定也能應對大併發的問題,否則如果使用者收到驗證請求都發完驗證碼再返回的話就會阻塞過程中其它使用者的驗證請求,或者使用者收到驗證請求新建一個執行緒傳送驗證碼的話在大併發時會遇到建立執行緒數有限的瓶頸。