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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

RabbitMQ 入门系列(5)— RabbitMQ 使用场景优缺点

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ 入门系列(5)— RabbitMQ 使用场景优缺点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 為什么要使用 MQ

1.1 異步

怎么理解異步這個概念呢? 舉個簡單的例子,假設有個業務需要寫數據庫,但是呢寫數據庫需要一定的網絡開銷,可能是幾毫秒或者幾十毫秒,這對于延時要求很高的業務來說是不可接受的,在寫數據庫的同時會嚴重阻塞后面的任務。要解決這種場景的問題,就需要采用異步的設計。

MQ 的出現為這種異步的設計提供了很好的支持, 我們可以把要寫數據庫的 SQL 存儲在 MQ 中,而由另外的進程從 MQ 中讀取并寫進數據庫, 這樣就可以避免主業務在寫數據庫延遲操作。

1.2 解耦

解耦, 從字面意思來看就是解除耦合。以上面的例子繼續來講,假如 A 功能用于生成寫數據庫的 SQL, 而 B 功能用于將 SQL 執行寫到數據庫, 那么假如業務需求發生變更,需要寫多張表或者修改生成的 SQL,那么我們只需要修改功能 A 就可以。

而假如沒有解耦的話,那么就必須修改整個業務邏輯,肯能會引發其它的問題。

1.3 高并發緩沖

假如瞬時間有 1 萬個任務同時觸發, 但是系統最大能同時負載 1000 個任務,如果在同一時刻處理這 1 萬個任務,系統可能會崩潰,那么就可以把這 1 萬個任務發送給 MQ,讓 MQ 先緩存下來,然后系統在每秒從 MQ 中獲取 1000 個任務來處理。這樣就可以避免瞬時間給系統造成的壓力。

1.4 順序調度

先進先出,按順序處理。

2. MQ 可能帶來的問題

2.1 系統可用性降低

增加 MQ 之后在一定程度上方便了我們專注于業務開發,但是如果 MQ 使用不當或者 MQ 突然掛掉,那么就會對我們的業務造成很大的影響。所以從這個角度來看增加 MQ 會使我們系統的可用性降低。

2.2 系統復雜度提高

本來系統通過調用接口就能完事的,但是加入一個 MQ 之后,需要考慮消息重復消費、消息丟失、甚至消息順序性的問題,為了解決這些問題,有需要引入很多復雜的機制,這樣一來系統的復雜度提高了很多。

2.3 數據一致性問題

當 A 功能生成 SQL 之后,A 就認為當前系統中某個屬性已經發生變更,但是假如 B 功能沒有將 SQL 寫進數據庫那么就會造成系統某個屬性的實際值和預期值不一致問題。

總結

以上是生活随笔為你收集整理的RabbitMQ 入门系列(5)— RabbitMQ 使用场景优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。