亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java分布式事務怎么理解

發布時間:2022-01-05 17:17:35 來源:億速云 閱讀:142 作者:iii 欄目:云計算

這篇文章主要介紹“Java分布式事務怎么理解”,在日常操作中,相信很多人在Java分布式事務怎么理解問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java分布式事務怎么理解”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

事務就是一個會話過程中,對上下文的影響是一致的,要么所有的更改都做了,要么所有的更變都撤銷掉。就要么生,要么死。沒有半死不死的中間不可預期狀態。

參考下薛定諤的貓。

事務是為了保障業務數據的完整性和準確性的。

分布式事務,常見的兩個處理辦法就是兩段式提交和補償。
兩段式提交典型的就是XA,有個事務協調器,告訴大家,來都準備好提交,大家回復,都準備好了,然后協調器告訴大家,一起提交,大家都提交了。
補償比較好理解,先處理業務,然后定時或者回調里,檢查狀態是不是一致的,如果不一致采用某個策略,強制狀態到某個結束狀態(一般是失敗狀態),然后就世界太平了。典型的就是沖正操作。

準備好了以后,如果沒有問題,收到提交,所有人都開始提交。
這個時候,比如對數據庫來說,有redo日志的。
如果某個數據庫這時候宕機了,那么它重啟的時候,先執行檢查,也會把上一次的這些操作都提交掉的。所以各個點的數據都是一致的。

問題 1:比如 一個業務要調用很多的服務都是寫操作,如果有其中一個寫的服務失敗了,怎么辦 ?假設 4個寫的吧,有2個寫失敗了 。

kimmking:淘寶之類的網站一般的做法是,如果4個都成功才算成功,那么這次提交時4個寫都設置成一個中間狀態,先容許不一致。然后4個執行完成了以后,回調或是定時任務里檢查這4個數據是不是一致的,如果一致就全部置為成功狀態,如果不一致就全部置為失敗。

復雜的業務交互過程中,不建議使用強一致性的分布式事務。解決分布式事務的最好辦法就是不考慮分布式事務。就像剛說的問題一樣,把分布式的事務過程拆解成多個中間狀態,中間狀態的東西不允許用戶直接操作,等狀態都一致成功,或者檢測到不一致的時候全部失敗掉。就解耦了這個強一致性的過程。

一般情況下準實時就成了。涉及到錢,有時候也可以這么搞。
淘寶幾s內完整一個訂單處理,不是什么問題吧。
銀行也不是全部都強一致性。也會扎差,也會沖正。

特別是涉及到多個系統的時候,我們比如買機票,支付完成以后,只支付完成狀態,然后返回給用戶了,我們過幾分鐘再刷新頁面,才會看到變成已出票,訂單完成狀態。
這個時候,如果我們要求所有處理,都是強一致性的,那么久完蛋了。頁面要死在那兒幾分鐘,才把這個事務處理完成,返回給用戶。

這樣就肯定涉及一個問題,支付了,但是最終出票沒出來。那就沒辦法,商量換票或退款。
淘寶的訂單改成出票失敗,給支付發消息通知退款。

慢的時候,有可能是手工出票,這時出一張票半小時都可能,如果要求都必須強一致性的話,所有處理線程都掛在哪兒,系統早就完蛋了。

解決分布式事務的最好辦法就是不考慮分布式事務。

拆分,大的業務流程,轉化成幾個小的業務流程,然后考慮最終一致性。

問題2:分布式事務是你們自己開發的,還是數據庫自帶的?

kimmking:

1、只要一個處理邏輯能保證要么成功,要么跟什么也沒做一樣,都算是事務。數據庫事務,MQ也有事務。
你自己甚至可以寫個程序生成兩個文件,要么都生成了,要么都刪掉不留痕跡,這也算是事務。
2、分布式事務這一塊有個XA規范,實現XA接口的事務,都可以加入到一個分布式事務中,被XA容器管理起來。

3、補償的辦法,需要具體情況具體分析,沒有一個各種場合都適用的框架。

到此,關于“Java分布式事務怎么理解”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

读书| 吉安县| 石狮市| 西吉县| 临洮县| 重庆市| 巴彦淖尔市| 商洛市| 延津县| 宣化县| 汕头市| 西乌珠穆沁旗| 万山特区| 云龙县| 合作市| 桃园县| 苏尼特左旗| 霞浦县| 肥西县| 赣州市| 东至县| 沽源县| 景泰县| 城固县| 临湘市| 平邑县| 太原市| 托克逊县| 普宁市| 诸城市| 栾城县| 渭南市| 永川市| 洪洞县| 揭东县| 五家渠市| 昭通市| 探索| 华安县| 邹平县| 商南县|