由真實情境聯想到的對事務認識的二三事

來源:互聯網
上載者:User

標籤:

真實情境:公司b2c app測試過程中,前端測試發現一個bug--從虛擬錢包轉賬到,收款成功,虛擬錢包金額無扣減
1.認識的誤區一:事務裡的資源都是能夠rollback的.

問題代碼邏輯如下

//虛擬碼begin translation//調用支付介面boolean callResult= remote.transf(......);if(callResult){   //操作本機資料庫   boolean payResult= local.pay(......);   if(payResult)   {      commit;   }   else   {     rollback;   }}else{  rollback}end translation



問題原因:轉賬介面對調用方而言,不支援rollback,因此這是一個"偽事務",
真正的事務應當是無論是本地事務還是分散式交易
參與事務的任何一個資源管理員關聯的資源是支援commit和rollback的;

解決方案:調整調用次序

//虛擬碼begin translation//操作本機資料庫boolean callResult = local.pay(......);if(callResult){   //調用支付介面   boolean payResult= remote.transf(......);   if(payResult)   {      commit;   }   else   {     rollback;   }}else{  rollback}end translation

 


2.認識誤區二:事務是有效
http://www.cnblogs.com/xiaoyuanding/p/3947986.html

分散式交易可以簡化為本地事務
簡化為本地事務有效嗎?
由於調用了兩次刪除檔案的操作,所以無論怎麼調整調用次序,本地事務都不起作用,因此使用事務跟不用事務結果一樣

解決方案:藉助持久化訊息佇列投遞訊息或定時任務+訊息狀態欄位來刪除檔案,如遇不成功,不斷重試,直到成功。

由真實情境聯想到的對事務認識的二三事

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.