日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[RabbitMQ]什么是MQ

發(fā)布時間:2023/12/4 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [RabbitMQ]什么是MQ 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是MQ

MQ(message queue),從字面意思上看,本質(zhì)是個隊列,FIFO 先入先出,只不過隊列中存放的內(nèi)容是message 而已,還是一種跨進程的通信機制,用于上下游傳遞消息。在互聯(lián)網(wǎng)架構(gòu)中,MQ 是一種非常常
見的上下游“邏輯解耦+物理解耦”的消息通信服務。使用了 MQ 之后,消息發(fā)送上游只需要依賴 MQ,不用依賴其他服務。

為什么要用MQ

1.流量消峰

舉個例子,如果訂單系統(tǒng)最多能處理一萬次訂單,這個處理能力應付正常時段的下單時綽綽有余,正常時段我們下單一秒后就能返回結(jié)果。但是在高峰期,如果有兩萬次下單操作系統(tǒng)是處理不了的,只能限制訂單超過一萬后不允許用戶下單。使用消息隊列做緩沖,我們可以取消這個限制,把一秒內(nèi)下的訂單分散成一段時間來處理,這時有些用戶可能在下單十幾秒后才能收到下單成功的操作,但是比不能下單的體
驗要好。

2.應用解耦

以電商應用為例,應用中有訂單系統(tǒng)、庫存系統(tǒng)、物流系統(tǒng)、支付系統(tǒng)。用戶創(chuàng)建訂單后,如果耦合調(diào)用庫存系統(tǒng)、物流系統(tǒng)、支付系統(tǒng),任何一個子系統(tǒng)出了故障,都會造成下單操作異常。當轉(zhuǎn)變成基于消息隊列的方式后,系統(tǒng)間調(diào)用的問題會減少很多,比如物流系統(tǒng)因為發(fā)生故障,需要幾分鐘來修復。在這幾分鐘的時間里,物流系統(tǒng)要處理的內(nèi)存被緩存在消息隊列中,用戶的下單操作可以正常完成。當物流系統(tǒng)恢復后,繼續(xù)處理訂單信息即可,中單用戶感受不到物流系統(tǒng)的故障,提升系統(tǒng)的可用性。

3.異步處理

有些服務間調(diào)用是異步的,例如 A 調(diào)用 B,B 需要花費很長時間執(zhí)行,但是 A 需要知道 B 什么時候可以執(zhí)行完,以前一般有兩種方式,A 過一段時間去調(diào)用 B 的查詢 api 查詢。或者 A 提供一個 callback api, B 執(zhí)行完之后調(diào)用 api 通知 A 服務。這兩種方式都不是很優(yōu)雅,使用消息總線,可以很方便解決這個問題,A 調(diào)用 B 服務后,只需要監(jiān)聽 B 處理完成的消息,當 B 處理完成后,會發(fā)送一條消息給 MQ,MQ 會將此消息轉(zhuǎn)發(fā)給 A 服務。這樣 A 服務既不用循環(huán)調(diào)用 B 的查詢 api,也不用提供 callback api。同樣 B 服務也不用做這些操作。A 服務還能及時的得到異步處理成功的消息。

總結(jié)

以上是生活随笔為你收集整理的[RabbitMQ]什么是MQ的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。