初識MQ
阿新 • • 發佈:2018-11-19
消息隊列 邏輯 業務 ssp ron 異步 開始 優勢 處理
1. 什麽是MQ?
消息隊列(Message Quene)是一種跨進程的通信機制,用於上下遊傳遞消息。
MQ是一種非常常見的上下遊“邏輯解耦+物理解耦”的消息通信服務。
使用了MQ之後,消息發送上遊只需要依賴MQ,邏輯上和物理上都不用依賴其他服務。
2. 什麽時候不使用MQ?
結論:調用方實時依賴執行結果的業務場景,請使用調用,而不是MQ。
比如:用戶登錄場景,登錄頁面調用passport服務,passport服務的執行結果直接影響登錄結果,此處的“登錄頁面”與“passport服務”就必須使用調用關系,而不能使用MQ通信。
3. 什麽時候使用MQ?
1)數據驅動的任務依賴:多個任務執行有先後關系,且任務2依賴前面的任務1結果。任務2訂閱任務1,任務1完成後發送消息到MQ,任務2接收到消息後開始執行。
2)上遊不關心下遊執行結果:上遊只需要產生消息即可,下遊自行消費。
3)異步返回執行時間長:回調網關+MQ
4. MQ的優劣
4.1 MQ的優勢
1)解耦
2)數據持久化到被完全處理,規避數據丟失的風險
3)增加靈活性和峰值處理能力
4)MQ中的消息是有序的
5)異步通信機制
4.2 MQ的劣勢
1)系統更復雜,多了一個MQ組件
2)消息傳遞路徑更長,延時會增加
3)消息可靠性和重復性互為矛盾,消息不丟不重難以同時保證
4)上遊無法知道下遊的執行結果,這一點是很致命的
初識MQ