樂觀鎖的冪等性方案


那么為了使用樂觀鎖,我們首先修改t_goods表,增加一個version字段,數據默認version值為1

 

 

樂觀鎖方案

借鑒數據庫的樂觀鎖機制,如:
 update t_goods set count = count -1 , version = version + 1 where good_id=#{id} and version = 1

 

根據version版本,也就是在操作庫存前先獲取當前商品的version版本號,然后操作的時候帶上此version號。我們梳理下,我們第一次操作庫存時,得到version為1,調用庫存服務version變成了2;但返回給訂單服務出現了問題,訂單服務又一次發起調用庫存服務,當訂單服務傳如的version還是1,再執行上面的sql語句時,就不會執行;因為version已經變為2了,where條件就不成立。這樣就保證了不管調用幾次,只會真正的處理一次。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM