消息队列(MQ)的作用
生活随笔
收集整理的這篇文章主要介紹了
消息队列(MQ)的作用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
消息隊列(MQ)的作用
消息隊列的作用主要有以下三點:
情景描述
以用戶注冊為例,系統在用戶注冊后會調用郵件服務功能發送注冊信息郵件給客戶,下面是各服務的調用時間
| 新增用戶 | 0.5s |
| 郵件服務 | 5s |
| 發送用戶注冊信息至MQ | 0.5s |
- 異步處理
在未使用RabbitMQ時候,用戶需要等待時間5.5s(新增用戶0.5s+調用郵件服務5s)
使用RabbitMQ后,唯一不同是在執行新增用戶服務(0.5s)后沒有調用郵件服務,而是將用戶注冊信息發送至MQ(耗時0.5s),故總耗時是1s。
因此,使用RabbitMQ的第一個特點是異步處理程序,達到減少用戶等待時間,優化用戶體驗感。
- 應用解耦
再說一下使用消息隊列的應用解耦特點:
還是上面這幅圖,假如郵件服務程序所在的服務器宕機,那么沒有使用消息隊列情況下代碼會出現異常報錯,無法返回結果給用戶。
使用消息隊列后,服務端在完成新增用戶和將注冊用戶信息發送至RabbitMQ后就將注冊結果返回給用戶,郵件服務等到RabbitMQ消費者消費后再執行,就算郵件服務所在服務器宕機,后面也會有專業的運維人員進行維護郵件服務(消息經持久化,未被消費會一直存在)。同樣能給予用戶舒適的體驗感。
- RabbitMQ+Redis完成流量削峰
假如有100000個請求
統計請求數量,將其存放至redis,
系統會將前1000個請求存放到RabbitMQ中。創建訂單處理服務來消費存放在MQ中信息,處理完畢后再將信息存放至mysql數據庫。
假如超過1000請求數,系統會直接將后面的請求返回信息(“商品已售罄”),同時將數據寫入mysql數據庫作為相關的數據記錄。
Memorial Day is 513 days |
總結
以上是生活随笔為你收集整理的消息队列(MQ)的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Divi WordPress企业建站主题
- 下一篇: ACM比赛环境-Mac visual s