1. 程式人生 > >初識MQ

初識MQ

消息隊列 邏輯 業務 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