商鋪A、B、C的商品數(shù)據(jù)相互獨(dú)立,物理上他們可能分布在不同數(shù)據(jù)庫(kù)里?赡苡邢旅鎺c(diǎn):
1、采用消息隊(duì)列,但消息隊(duì)列也是按商鋪分開的
2、分布式事務(wù),必須保證購(gòu)物車?yán)锏乃猩唐范汲晒蹨p庫(kù)存才返回成功,否則有一個(gè)失敗就回滾報(bào)錯(cuò)或者重試(在這個(gè)場(chǎng)景重試不太好)
3、操作超時(shí)處理,這個(gè)批量下單操作是一個(gè)重量級(jí)操作,涉及消息隊(duì)列操作、數(shù)據(jù)庫(kù)操作和外部調(diào)用,所以必須設(shè)置操作超時(shí)時(shí)間以減輕系統(tǒng)擁堵
4、業(yè)務(wù)數(shù)據(jù)一致性:商品庫(kù)存減了,那么買家的購(gòu)買記錄必須出現(xiàn)相應(yīng)商品,并且用戶支付的金錢必須成功進(jìn)到淘寶平臺(tái)(淘寶必須等買家確認(rèn)收貨后才會(huì)把錢從淘寶平臺(tái)打到賣家賬戶里)
5、第三方系統(tǒng)調(diào)用出錯(cuò)和超時(shí)處理:買家確認(rèn)下單,需要支付一定金錢,往往需要調(diào)用外部支付接口(比如招商銀行的扣款接口),對(duì)外部系統(tǒng)調(diào)用可能也容易出錯(cuò)和超時(shí)
6、系統(tǒng)過(guò)載保護(hù),網(wǎng)關(guān)層應(yīng)該實(shí)時(shí)監(jiān)控系統(tǒng)負(fù)載,如果負(fù)載超過(guò)設(shè)定的閥值就直接拒絕用戶請(qǐng)求或者將用戶請(qǐng)求放入一個(gè)等待隊(duì)列。