站長資訊網
最全最豐富的資訊網站

一定要用消息隊列?聊聊為什么要用它

本篇文章給大家帶來了關于消息隊列的相關知識,其中主要介紹了咱們之所以要使用消息隊列的原因,為什么要使用消息隊列,感興趣的朋友,下面一起來看一下吧,希望對大家有幫助。

為什么要使用消息隊列,六個字總結:解耦、異步、消峰

1)解耦

傳統模式下系統間的耦合性太強。怎么說呢,舉個例子:系統 A 通過接口調用發送數據到 B、C、D 三個系統,如果將來 E 系統接入或者 B 系統不需要接入了,那么系統 A 還需要修改代碼,非常麻煩。

一定要用消息隊列?聊聊為什么要用它一定要用消息隊列?聊聊為什么要用它

如果系統 A 產生了一條比較關鍵的數據,那么它就要時時刻刻考慮 B、C、D、E 四個系統如果掛了該咋辦?這條數據它們是否都收到了?顯然,系統 A 跟其它系統嚴重耦合。

而如果我們將數據(消息)寫入消息隊列,需要消息的系統直接自己從消息隊列中消費。這樣下來,系統 A 就不需要去考慮要給誰發送數據,不需要去維護這個代碼,也不需要考慮其他系統是否調用成功、失敗超時等情況,反正我只負責生產,別的我不管。

一定要用消息隊列?聊聊為什么要用它一定要用消息隊列?聊聊為什么要用它

2)異步

先來看傳統同步的情況,舉個例子:系統 A 接收一個用戶請求,需要進行寫庫操作,還需要同樣的在 B、C、D 三個系統中進行寫庫操作。如果 A 自己本地寫庫只要 1ms,而 B、C、D 三個系統寫庫分別要 100ms、200ms、300ms。最終請求總延時是 1 + 100 + 200 + 300 = 601ms,用戶體驗大打折扣。

一定要用消息隊列?聊聊為什么要用它一定要用消息隊列?聊聊為什么要用它

如果使用消息隊列,那么系統 A 就只需要發送 3 條消息到消息隊列中就行了,假如耗時 5ms,A 系統從接受一個請求到返回響應給用戶,總時長是 1 + 5 = 6ms,對于用戶而言,體驗好感度直接拉滿。

一定要用消息隊列?聊聊為什么要用它一定要用消息隊列?聊聊為什么要用它

3)消峰

如果沒有使用緩存或者消息隊列,那么系統就是直接基于數據庫 MySQL 的,如果有那么一個高峰期,產生了大量的請求涌入 MySQL,毫無疑問,系統將會直接崩潰。

那如果我們使用消息隊列,假設 MySQL 每秒鐘最多處理 1k 條數據,而高峰期瞬間涌入了 5k 條數據,不過,這 5k 條數據涌入了消息隊列。這樣,我們的系統就可以從消息隊列中根據數據庫的能力慢慢的來拉取請求,不要超過自己每秒能處理的最大請求數量就行。

也就是說消息隊列每秒鐘 5k 個請求進來,1k 個請求出去,假設高峰期 1 個小時,那么這段時間就可能有幾十萬甚至幾百萬的請求積壓在消息隊列中。不過這個短暫的高峰期積壓是完全可以的,因為高峰期過了之后,每秒鐘就沒有那么多的請求進入消息隊列了,但是數據庫依然會按照每秒 1k 個請求的速度處理。所以只要高峰期一過,系統就會快速的將積壓的消息給處理掉。

一定要用消息隊列?聊聊為什么要用它

推薦學習:《Redis視頻教程》

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产精品区AV一区二区| 精品国产免费人成电影在线观看| 日韩大片观看网址| 国产精品民宅偷窥盗摄| 精品人妻一区二区三区浪潮在线 | 日韩精品一区二区三区毛片| 国产成人精品亚洲日本在线| 无码精品A∨在线观看| 国产亚洲精品va在线| 精品国产污污免费网站入口| 日韩成av人片在线观看| 国产精品久久免费视频| 亚洲av永久中文无码精品| 精品人妻久久久久久888| 久久夜色精品国产嚕嚕亚洲av| 日韩夜夜高潮夜夜爽无码| 国产在线精品无码二区二区| 亚洲av午夜国产精品无码中文字 | 日韩免费高清大片在线| 国产精品林美惠子在线播放 | 久久久99精品成人片| 2020国产精品永久在线观看| 国产亚洲精品久久久久秋霞 | 狠狠色婷婷久久综合频道日韩| 无码aⅴ精品一区二区三区| 亚洲精品美女在线观看播放| 久久久久99精品国产片| 99久久国产综合精品女同图片| 国产精品成人免费观看| 亚洲AV日韩AV一区二区三曲| 日韩精品一区在线| 久久精品亚洲日本波多野结衣 | 999久久久无码国产精品| 国产精品无码a∨精品| 精品99久久aaa一级毛片| 亚洲国产成人精品久久久国产成人一区二区三区综 | 日韩精品无码熟人妻视频| 国语自产偷拍精品视频偷蜜芽 | 亚洲精品在线网站| 国产精品久线在线观看| 国产在线精品一区二区三区不卡|