RocketMQ系列---MQ的好處

MQ簡介

什麼是MQ 跨進程的消息隊列,主要角色包括生產者與消費者。 生產者只負責生產信息,無法感知消費者是誰,消息怎麼處理,處理結果是什麼。 消費者負責接收及處理消息,無法感知生產者是誰,怎麼產生的。

作用及意義

1.消息異步:

上游直接調用下游

åºæ¯ä¸¾ä¾

缺點:

  • 上游關注執行結果,但執行時間很長
  • 上游需要同步等待下游執行結果
  • 下游系統故障導致上游系統無法使用
  • 下游增加需修改上游代碼

使用MQ調用(異步)

åºæ¯ä¸¾ä¾

使用MQ的優點:

  • 上游無需等待下游執行完畢,加快上游響應速度
  • 下游系統故障不會影響上游系統的運行
  • 增加下游只需訂閱 MQ

2.解耦

服務解耦:系統解耦,用戶系統或者其他系統需要發送短信可以通過 MQ 執行;很好的將 用戶系統 和 短信系統進行解耦;

採用MQ的優點是:

  • 不需要預留 buffer,上游任務執行完,下游任務總會在第一時間被執行
  • 依賴多個任務,被多個任務依賴都很好處理,只需要訂閱相關消息即可
  • 有任務執行時間變化,下游任務都不需要調整執行時間

3.削峯

請求高峯期

舉個例子:系統A一天中大部分時間每秒請求併發數量就 100 多個,但是中午12點-1點每秒請求併發量就飆升到 10000 多個,但是系統每秒最大能處理的請求量只有 1000 多。

  • 不使用MQ

åºæ¯ä¸¾ä¾

這個時候如果讓系統硬抗會導致系統掛掉

  • 使用MQ

通過使用 MQ 達到限流的效果,系統無法處理的請求會堆積在 MQ 中,高峯期過後系統可以繼續消費 MQ 中的請求。

åºæ¯ä¸¾ä¾

使用MQ的優點:

      系統不會因爲高峯期的請求量掛掉

引入MQ帶來的問題:

  • 可用性降低

    系統引入的外部依賴越多,越容易掛掉,MQ 掛掉之後會導致整個系統不可用。

  • 複雜度提高

    重複消費、消息丟失、消息的順序性等這些都是引入 MQ 之後需要考慮的事情。

  • 一致性問題

    A 系統處理完了直接返回成功了,人都以爲你這個請求就成功了;但是問題是,要是 BCD 三個系統那裏,BD 兩個系統寫庫成功了,結果 C 系統寫庫失敗了,就會導致數據不一致。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章