首頁技術文章正文

為什么使用MQ?使用MQ有哪些好處?

更新時間:2022-08-05 來源:黑馬程序員 瀏覽量:

IT培訓班

  使用MQ的好處:解耦,異步,削峰平谷;

  解耦:當A系統(tǒng)生產關鍵數據,而且B,C,D系統(tǒng)需要A系統(tǒng)給它們發(fā)送數據,來進行下一步操作,此時A系統(tǒng)和BCD系統(tǒng)產生了嚴重的耦合,所有的操作和維護都要在A系統(tǒng)中進行,如果將A系統(tǒng)產生的數據放到MQ當中,讓BCD系統(tǒng)需要的時候去消費,此時就解放了A系統(tǒng),不用考慮調用成功,失敗超時等情況,同時ABCD系統(tǒng)獨立運行,后續(xù)新添加系統(tǒng)需要A系統(tǒng)的數據,也不需要去修改A系統(tǒng)的代碼,達到了解耦的效果。


  異步:一般互聯網類企業(yè),對用戶的直接操作,一般要求每個請求在200ms以內完成。對于一個系統(tǒng)調用多個系統(tǒng),在不適用mq的情況下,它執(zhí)行完返回的耗時,是執(zhí)行完所有系統(tǒng)所需時間的總和;使用mq進行優(yōu)化后,執(zhí)行的耗時,則是執(zhí)行主系統(tǒng)的耗時,以及加上主系統(tǒng)發(fā)送數據到消息隊列的耗時,大幅度提升高延時接口的性能,提升了用戶體驗。


  削峰平谷:一般MySQL的每秒請求最高在2000左右,用戶訪問量高峰期的時候涌入的大量請求,很可能將MySQL給打死,然后系統(tǒng)就掛掉,但是高峰期過了,請求量可能遠遠低于2000,所以這種情況去增加服務器就不值得,如果使用mq的情況,將用戶的請求全部放到mq中,然后讓系統(tǒng)去消費用戶的請求,不要超過系統(tǒng)所能承受的最大請求數量,保證系統(tǒng)不會再高峰期掛掉,但此時可能有幾十萬或幾百萬請求積壓在mq中,但是高峰期一過,系統(tǒng)還是按照最大請求數量進行處理請求,很快就能將積壓請求處理完。


  使用MQ的缺陷:

  系統(tǒng)可用性降低:以前只要擔心系統(tǒng)的問題,現在還要考慮mq如果掛掉的問題,因為mq一旦掛掉,所關聯的系統(tǒng),就會統(tǒng)統(tǒng)掛掉。

  系統(tǒng)復雜性變高:考慮的問題變多,要考慮消息丟失,消息重復消費的情況。

  一致性問題:比如A系統(tǒng)調用BCD系統(tǒng),BCD同時成功才能執(zhí)行成功,返回數據,現在BC執(zhí)行成功,D發(fā)生異常的情況,并沒有執(zhí)行成功,但是A給用戶返回的是成功。


分享到:
在線咨詢 我要報名
和我們在線交談!