mq的作用
- 通過異步方式對(duì)系統(tǒng)解耦
- 增加系統(tǒng)的并發(fā)處理能力
通過異步方式對(duì)系統(tǒng)解耦
以用戶注冊(cè)為例,一般情況下:
成都網(wǎng)站設(shè)計(jì)、
成都網(wǎng)站制作服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠為客戶提供服務(wù)是我們的理念。
成都創(chuàng)新互聯(lián)把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
分下一下,上面過程存在的一些問題:
- 注冊(cè)過程會(huì)調(diào)用4個(gè)服務(wù)(注冊(cè)服務(wù)、郵件服務(wù)、短信服務(wù)、積分服務(wù)),服務(wù)之間依賴性太強(qiáng),任何一個(gè)服務(wù)不可用,直接影響整個(gè)注冊(cè)業(yè)務(wù)
- 接口耗時(shí)太長,每個(gè)服務(wù)耗時(shí)100ms,注冊(cè)流程耗時(shí)400ms
- 對(duì)用戶來說,用戶信息入庫是主要的業(yè)務(wù)流程,其他并不是響應(yīng)用戶過程中直接關(guān)注的邏輯,可以異步進(jìn)行處理
采用mq的方式實(shí)現(xiàn):
過程:
- 調(diào)用注冊(cè)服務(wù),注冊(cè)信息入庫,耗時(shí)100ms
- 投遞注冊(cè)消息到mq
- 返回注冊(cè)成功
- 對(duì)于用戶來說耗時(shí)200ms
- 其他3個(gè)操作(發(fā)郵件、發(fā)短信、增加積分)從消息隊(duì)列中拉取消息進(jìn)行處理,對(duì)于主流程來說是異步操作
將依賴于3個(gè)服務(wù)轉(zhuǎn)換為只依賴于mq服務(wù),只需要保證注冊(cè)服務(wù)、mq服務(wù)高可用,即可以保證注冊(cè)服務(wù)的高可用,相比保證其他3個(gè)服務(wù)高可用上容易了許多。
增加系統(tǒng)的并發(fā)處理能力
以電商中的秒殺場(chǎng)景為例,采用同步處理:
- 用戶點(diǎn)擊秒殺
- 調(diào)用訂單服務(wù),驗(yàn)證庫存、鎖定庫存
- 跳轉(zhuǎn)到支付頁面進(jìn)行支付
分析一下,存在的問題:
大家都有在銀行辦理業(yè)務(wù)的經(jīng)驗(yàn),銀行處理業(yè)務(wù)的流程:領(lǐng)號(hào)、排隊(duì)、等待叫號(hào)辦理業(yè)務(wù)。
秒殺中我們也可以參考銀行辦理業(yè)務(wù)的流程:
- 用戶點(diǎn)擊描述
- 系統(tǒng)接受到用戶請(qǐng)求后,生成一個(gè)唯一的編號(hào),然后投遞一條消息(秒殺下單)到mq
- 響應(yīng)用戶:秒殺正在處理中
- 秒殺系統(tǒng)從mq中拉取消息進(jìn)行處理,處理完成之后告知用戶,這步操作對(duì)于用戶來說是異步處理的過程
從上面可以看出,從接受用戶請(qǐng)求到響應(yīng)用戶請(qǐng)求,未訪問數(shù)據(jù)庫,只有生成編號(hào)和發(fā)送消息的操作,這部分處理速度是非??斓?,不存在性能的問題,數(shù)據(jù)庫也不存在壓力的問題了,所有用戶的請(qǐng)求都被作為一條消息投遞到mq進(jìn)行異步處理;從而解決了秒殺中同步處理遇到的各種問題。
其他一些使用場(chǎng)景
- 系統(tǒng)日志的處理
系統(tǒng)手機(jī)日志,異步發(fā)送到mq,日志服務(wù)隊(duì)從mq中拉取消息進(jìn)行各種處理,關(guān)于這個(gè)以后我們會(huì)專門討論。 - 通過事件驅(qū)動(dòng)的一些業(yè)務(wù),也可以使用mq實(shí)現(xiàn)
總結(jié)
- mq是采用異步的方式來解決系統(tǒng)耦合性的問題,并發(fā)處理的問題;重點(diǎn)是在于異步,那么什么情況下使用異步呢?當(dāng)調(diào)用方不強(qiáng)依賴于被調(diào)用方的結(jié)果的時(shí)候,可以采用異步的方式進(jìn)行處理,此時(shí)可以使用mq。
- 當(dāng)調(diào)用方強(qiáng)依賴于被調(diào)用方的結(jié)果的時(shí)候,需要使用同步的方式,不能使用mq
mq系列整個(gè)內(nèi)容,我們將討論:
- mq的使用場(chǎng)景
- 業(yè)務(wù)系統(tǒng)中投遞消息的幾種方式?
- 如何確保投遞消息一定成功?
- 消息消費(fèi)的幾種方式
- 如何確保消息至少消費(fèi)一次
- 如何保證消息消費(fèi)的冪等性
路人甲Java,只生產(chǎn)干貨,公眾號(hào):javacode2018,喜歡的關(guān)注一下。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁題目:聊聊mq的使用場(chǎng)景-創(chuàng)新互聯(lián)
本文來源:
http://weahome.cn/article/djcepo.html