RocketMQ實(shí)戰(zhàn)(上)

期望消失時(shí),恐懼就產(chǎn)生。

????????????????????——格拉西安

大綱

圖示

案例介紹

1.業(yè)務(wù)分析

模擬電商網(wǎng)站購(gòu)物場(chǎng)景中的【下單】和【支付】業(yè)務(wù)

圖示

(1)下單

用戶請(qǐng)求訂單系統(tǒng)下單

訂單系統(tǒng)通過RPC調(diào)用訂單服務(wù)下單

訂單服務(wù)調(diào)用調(diào)用庫(kù)存服務(wù),扣減庫(kù)存

訂單服務(wù)調(diào)用優(yōu)惠券服務(wù),扣減優(yōu)惠券

訂單支付完成后確認(rèn)訂單

(2)支付

用戶請(qǐng)求支付系統(tǒng)

支付系統(tǒng)調(diào)用第三方支付平臺(tái)API進(jìn)行發(fā)起支付流程

用戶通過第三方支付平臺(tái)支付成功后,第三方支付平臺(tái)回調(diào)通知支付系統(tǒng)

支付系統(tǒng)調(diào)用訂單服務(wù)確認(rèn)訂單

問題分析

1.分布式系統(tǒng)宕機(jī)問題

整個(gè)系統(tǒng)是分布式部署,有訂單系統(tǒng)、商品系統(tǒng)、會(huì)員系統(tǒng)。三個(gè)系統(tǒng)通過RPC調(diào)用完成整個(gè)下單流程。RPC調(diào)用會(huì)導(dǎo)致下單中各系統(tǒng)耦合在一起,假如會(huì)員系統(tǒng)宕機(jī),會(huì)導(dǎo)致下單流程的不可用。

如何異步解耦:

利用RocketMQ,訂單系統(tǒng)在下單后,作為生產(chǎn)者把“下單消息”寫入MQ,商品系統(tǒng)與會(huì)員系統(tǒng)作為消費(fèi)者消費(fèi)MQ中的“下單消息”。這樣可以達(dá)到異步解耦的目的,只要訂單系統(tǒng)正常,對(duì)于用戶來說下單業(yè)務(wù)都可以正常進(jìn)行。

2.數(shù)據(jù)完整性問題

用戶提交訂單后,扣減庫(kù)存成功、扣減優(yōu)惠券成功,但是在確認(rèn)訂單操作失?。ū热纾褐Ц妒。?,那么就需要對(duì)庫(kù)存、優(yōu)惠券進(jìn)行回退。

如何保證數(shù)據(jù)的完整性?

在收到確認(rèn)訂單失敗通知后,向MQ發(fā)送“確認(rèn)失敗消息”

商品系統(tǒng)與會(huì)員系統(tǒng)作為消費(fèi)者監(jiān)聽“確認(rèn)失敗消息”,進(jìn)行對(duì)應(yīng)業(yè)務(wù)的回退。

3.無效訂單、同行攻擊!

用戶通過第三方支付平臺(tái)(支付寶、微信)支付,假如下了訂單,過了很久還沒支付,那么這個(gè)訂單應(yīng)該取消,所以這個(gè)地方涉及到限時(shí)訂單場(chǎng)景,系統(tǒng)在15分鐘之內(nèi)沒有支付成功,則需要取消訂單,同時(shí)回退庫(kù)存與優(yōu)惠券

4.秒殺、搶購(gòu)高峰流程沖擊

項(xiàng)目代碼介紹

1.項(xiàng)目工程

圖示
圖示
圖示

2.數(shù)據(jù)庫(kù)

圖示

(1)訂單表

圖示

(2)商品表

圖示

(3)用戶表

圖示

(4)優(yōu)惠券表

圖示

3.框架及技術(shù)

? ??整體項(xiàng)目使用SpringBoot搭建,整合了Mybatis,Maven依賴如下:

圖示

????SpringBoot整合RocketMQ,同時(shí)使用gson作為MQ發(fā)送和消費(fèi)的序列工具

圖示

另外使用mybaits-gengerator逆向工程針對(duì)數(shù)據(jù)表生成CURD持久層代碼

圖示
圖示


鏈接:?https://pan.baidu.com/s/1gCOLPI76hu1IJwLJnVOdfg? 提取碼: rc2r?

我是嬈疆_蚩夢(mèng),讓堅(jiān)持成為一種習(xí)慣,感謝各位大佬的:點(diǎn)贊、收藏評(píng)論,我們下期見!


上一篇:RocketMQ常見問題分析以及性能優(yōu)化

下一篇:RocketMQ實(shí)戰(zhàn)(下)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • 接 《RocketMQ實(shí)戰(zhàn)(一)》,《RocketMQ實(shí)戰(zhàn)(二)》,本篇博客主要討論的話題是:順序消費(fèi)、RMQ在分...
    張豐哲閱讀 36,343評(píng)論 36 101
  • 最近 RocketMQ 剛剛上生產(chǎn)環(huán)境,閑暇之時(shí)在這里做一些分享,主要目的是讓初學(xué)者能快速上手RocketMQ。 ...
    云原生實(shí)戰(zhàn)閱讀 243,847評(píng)論 38 240
  • 一、什么是消息隊(duì)列(MQ) 相比消息隊(duì)列可能大家更熟悉隊(duì)列這一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),那消息隊(duì)列就可以簡(jiǎn)單的理解為:...
    Skeeh閱讀 1,205評(píng)論 0 1
  • 庫(kù)存系統(tǒng)的架構(gòu)很有意思,從上圖來看功能上其實(shí)并不復(fù)雜,但是他面臨的技術(shù)復(fù)雜度卻是相當(dāng)高的,比如秒殺品在高并發(fā)的情況...
    程序員的自我修養(yǎng)閱讀 609評(píng)論 0 0
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,399評(píng)論 2 7

友情鏈接更多精彩內(nèi)容