鍍金池/ 問答/人工智能  Java  Linux/ 查詢訂單價格后,批量下單,真正扣錢時機為接單時,如何保證賬戶余額充足?

查詢訂單價格后,批量下單,真正扣錢時機為接單時,如何保證賬戶余額充足?

1.每個訂單都都可以先查詢到多少錢,注:下單的時候不能查詢。(目前考慮的是查詢時放緩存里,但是這個單被查了不一定會被下單,而且緩存的時間不好定)
2.扣錢是在這個單子被接單的時候扣的
3.如果多線程或者循環(huán)過來一堆訂單,怎么保證賬戶余額大于0?余額存在DB,關(guān)于余額的操作已經(jīng)通過reids保證余額更新是安全的。

題目如上,歡迎各位賜教!

回答
編輯回答
念舊

可以加個凍結(jié)金額的字段,對應(yīng)你的預(yù)扣錢的概念;

2017年5月14日 10:54
編輯回答
玄鳥

拋磚引玉:

多線程 扣錢 要保證安全,在扣錢的時刻一定要順序,保證原子性;

想到兩種,1 是 使用redis存余額,redis操作本身是原子的; 2 是 使用數(shù)據(jù)庫樂觀鎖,數(shù)據(jù)加版本號,更新數(shù)據(jù)檢驗版本號。

2017年12月29日 00:04