聊聊mq的使用場景

mq的作用

  1. 通過異步方式對系統(tǒng)解耦
  2. 增加系統(tǒng)的并發(fā)處理能力

通過異步方式對系統(tǒng)解耦

以用戶注冊為例,一般情況下:
聊聊mq的使用場景

為企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、全網(wǎng)營銷推廣、競價托管、品牌運營等營銷獲客服務(wù)。創(chuàng)新互聯(lián)擁有網(wǎng)絡(luò)營銷運營團隊,以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗助力企業(yè)精準獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認可!

分下一下,上面過程存在的一些問題:

  1. 注冊過程會調(diào)用4個服務(wù)(注冊服務(wù)、郵件服務(wù)、短信服務(wù)、積分服務(wù)),服務(wù)之間依賴性太強,任何一個服務(wù)不可用,直接影響整個注冊業(yè)務(wù)
  2. 接口耗時太長,每個服務(wù)耗時100ms,注冊流程耗時400ms
  3. 對用戶來說,用戶信息入庫是主要的業(yè)務(wù)流程,其他并不是響應(yīng)用戶過程中直接關(guān)注的邏輯,可以異步進行處理

采用mq的方式實現(xiàn):
聊聊mq的使用場景

過程:

  • 調(diào)用注冊服務(wù),注冊信息入庫,耗時100ms
  • 投遞注冊消息到mq
  • 返回注冊成功
  • 對于用戶來說耗時200ms
  • 其他3個操作(發(fā)郵件、發(fā)短信、增加積分)從消息隊列中拉取消息進行處理,對于主流程來說是異步操作

將依賴于3個服務(wù)轉(zhuǎn)換為只依賴于mq服務(wù),只需要保證注冊服務(wù)、mq服務(wù)高可用,即可以保證注冊服務(wù)的高可用,相比保證其他3個服務(wù)高可用上容易了許多。

增加系統(tǒng)的并發(fā)處理能力

以電商中的秒殺場景為例,采用同步處理:

  • 用戶點擊秒殺
  • 調(diào)用訂單服務(wù),驗證庫存、鎖定庫存
  • 跳轉(zhuǎn)到支付頁面進行支付

分析一下,存在的問題:

  • 驗證庫存、鎖定庫存會訪問數(shù)據(jù)庫
  • 秒殺場景,商品數(shù)量有限,請求量非常大,每個請求來了都做以上處理,直接會把數(shù)據(jù)庫壓垮,導(dǎo)致數(shù)據(jù)庫無法對外提供服務(wù),數(shù)據(jù)庫的不可用直接導(dǎo)致整個業(yè)務(wù)的不可用,秒殺活動打水漂。

  • 大量請求會同時到達,同時去訪問數(shù)據(jù)庫,數(shù)據(jù)庫連接有限,導(dǎo)致很多請求會處于等待狀態(tài),導(dǎo)致并發(fā)性能急劇下降
  • 大量用戶同時操作庫存,存在爭搶數(shù)據(jù)庫鎖的情況,容易導(dǎo)致死鎖
  • 秒殺中數(shù)量一般是有限,大量用戶搶購,其實最終只有很少的用戶能夠搶購到

大家都有在銀行辦理業(yè)務(wù)的經(jīng)驗,銀行處理業(yè)務(wù)的流程:領(lǐng)號、排隊、等待叫號辦理業(yè)務(wù)

秒殺中我們也可以參考銀行辦理業(yè)務(wù)的流程:

  • 用戶點擊描述
  • 系統(tǒng)接受到用戶請求后,生成一個唯一的編號,然后投遞一條消息(秒殺下單)到mq
  • 響應(yīng)用戶:秒殺正在處理中
  • 秒殺系統(tǒng)從mq中拉取消息進行處理,處理完成之后告知用戶,這步操作對于用戶來說是異步處理的過程

從上面可以看出,從接受用戶請求到響應(yīng)用戶請求,未訪問數(shù)據(jù)庫,只有生成編號和發(fā)送消息的操作,這部分處理速度是非常快的,不存在性能的問題,數(shù)據(jù)庫也不存在壓力的問題了,所有用戶的請求都被作為一條消息投遞到mq進行異步處理;從而解決了秒殺中同步處理遇到的各種問題。

其他一些使用場景

  1. 系統(tǒng)日志的處理
    系統(tǒng)手機日志,異步發(fā)送到mq,日志服務(wù)隊從mq中拉取消息進行各種處理,關(guān)于這個以后我們會專門討論。
  2. 通過事件驅(qū)動的一些業(yè)務(wù),也可以使用mq實現(xiàn)

總結(jié)

  1. mq是采用異步的方式來解決系統(tǒng)耦合性的問題,并發(fā)處理的問題;重點是在于異步,那么什么情況下使用異步呢?當調(diào)用方不強依賴于被調(diào)用方的結(jié)果的時候,可以采用異步的方式進行處理,此時可以使用mq。
  2. 當調(diào)用方強依賴于被調(diào)用方的結(jié)果的時候,需要使用同步的方式,不能使用mq

mq系列整個內(nèi)容,我們將討論

  1. mq的使用場景
  2. 業(yè)務(wù)系統(tǒng)中投遞消息的幾種方式?
  3. 如何確保投遞消息一定成功?
  4. 消息消費的幾種方式
  5. 如何確保消息至少消費一次
  6. 如何保證消息消費的冪等性

路人甲Java,只生產(chǎn)干貨,公眾號:javacode2018,喜歡的關(guān)注一下。

文章標題:聊聊mq的使用場景
本文URL:http://muchs.cn/article30/ihgpso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、面包屑導(dǎo)航、網(wǎng)站維護、網(wǎng)站設(shè)計公司、定制開發(fā)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)