使用mq的好處和弊病?
- 解耦
- 異步化
- 削峰
使用mq的業(yè)務(wù)場景梳理
解耦場景:
- 基礎(chǔ)平臺服務(wù)場景
- 客戶變更個(gè)人信息時(shí), user域廣播消息通知其他業(yè)務(wù)線同步修改信息
- 客戶銷戶前, user域銷需要檢查各個(gè)業(yè)務(wù)線客戶的資產(chǎn)是否已清零? 是否還有在途交易?
- 支付域, 在對業(yè)務(wù)線通知支付結(jié)果時(shí), 也是廣播消息, 各業(yè)務(wù)線都對topic訂閱, 只關(guān)注自己業(yè)務(wù)線的訂單.
- 交易域, 在進(jìn)行業(yè)務(wù)線預(yù)下單時(shí), 需要調(diào)用各業(yè)務(wù)線對進(jìn)行前置校驗(yàn).
異步場景:
- 交易下單流程特別長( 涉及到交易落地, 支付準(zhǔn)備, 下單前置業(yè)務(wù)校驗(yàn), 業(yè)務(wù)預(yù)下單, 三方支付上賬, 業(yè)務(wù)支付通知等一系列流程)
- 狀態(tài)機(jī)特別多, 在一個(gè)大事務(wù)里串行處理不太可行.
- 涉及到特別多的系統(tǒng)交互
- 通過mq異步驅(qū)動每個(gè)狀態(tài)機(jī)的流轉(zhuǎn)
并發(fā)場景:
- 系統(tǒng)的業(yè)務(wù)接口并發(fā)量大, 性能要求高
- 但是涉及到外部接口調(diào)用(比如基金公司實(shí)時(shí)接口, 三方支付實(shí)時(shí)接口, 銀行接口等)
- 需要保證實(shí)時(shí)接口性能,但是又不可避免調(diào)用外部產(chǎn)生網(wǎng)絡(luò)延時(shí)(100ms+)
- 此時(shí)采用的是實(shí)時(shí)接口先DB落單(同城同機(jī)房一般95line <1ms, 同城異地機(jī)房一般95line <= 3ms)
- 再通過mq異步驅(qū)動后續(xù)流程
- 最終通過mq通知調(diào)用方交易結(jié)果