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