- 2 階段坷虑,創(chuàng)建訂單,扣減庫存
請求調(diào)用訂單服務(wù) 1 創(chuàng)建訂單---> 訂單庫 2 庫存庫減庫存.
image.png
訂單服務(wù) 下訂單送巡,扣減庫存
存在單點(diǎn)故障捧颅,數(shù)據(jù)不一致的問題
執(zhí)行前后,生成前置和后置的鏡像黄锤。 逆向執(zhí)行Sql.
- Seata引入了for update 全局鎖搪缨,如果出現(xiàn)死鎖,會不斷進(jìn)行重試鸵熟。 最后靠等待全局鎖超時才能釋放鎖副编。不優(yōu)雅也延長了對數(shù)據(jù)庫鎖的占有時間
下單的 庫存,訂單流强,賬戶痹届,優(yōu)惠券等各個庫.
XA 是 強(qiáng)一致性: 整合2階段提交都會一直持有鎖
TCC最終一致性: 不會一直持有資源的鎖
AT: 全局行鎖
- 定時任務(wù)呻待,盡最大努力通知
最大努力通知和可靠消息最終一致性
最大努力: 消息無法被發(fā)送方接收時,由接收方主動查詢消息
可靠性消息最終一致性:發(fā)出到接收的一致性队腐,消息發(fā)出并且被接收到
image.png
可靠性消息最終一致性方案
- 本地消息表記錄消息發(fā)送和消費(fèi)狀態(tài)蚕捉,定時任務(wù)不斷的做輪訓(xùn)
- MQ事務(wù)消息
- 最大努力通知
中臺架構(gòu)落地實(shí)戰(zhàn)
image.png