簡單的談一談分布式事務問題

2021-09-09 07:04:05 字數 1070 閱讀 5216

目前,網際網路行業的發展,使得系統由單體系統演變分布式系統,傳統的集中式蛻變為分布式的。而在分布式系統架構的到來,好處特別多【自行網上蒐集資料】,但也帶來乙個世界性的難題,即分布式事務問題。

在此,舉乙個例子【本人開發過程中的經歷】:

乙個電商系統,採取spring+springmvc+mybatis做基礎的技術架構,採用rpc框架做服務的遠端呼叫【dubbo+zookeeper】。

在訂單服務中order-service,生成訂單:1、先清空購物車【遠端呼叫完成】;2、寫order,ordergoods,orderaction【沒有經過遠端呼叫】。

這時,有乙個問題,這兩步無論操作的先後順序,比如,第一步先操作,當第一步完成後,第二步操作失敗。一般人都認為,這時資料庫中的資料會回滾。回滾嗎?答案不是的,操作兩個服務,代表的是兩個事物。

這就是乙個分布式事務問題,分布式事務的本質在於:不在乙個事務管理器裡面。

個人觀點:事務控制原理,txmanager:全域性事務管理器,一套完整的請求,需要經過controller--->service----->dao

在service業務模組與dao持久層之間,新增乙個txclient事務的客戶端。這個txclient有什麼作用?基於什麼原理製作的呢?

很簡單的想到,他就是乙個控制事務的***,將乙個請求中的所有事務都放到全域性事務管理器中,一起開始和結束。可以結合springaop面向切面程式設計+***的原理完成這種分布式事務處理的架構思想。

分布式事務的問題

今天遇到乙個使用net分布式事務訪問oracle資料庫的問題,報ora 00161 事務處理的分支長度86非法 允許的最大長度為 64 的錯誤,查詢的資料,均解決不了,最後挨個檢查,終於發現了問題。描述 1 作業系統為win7 64位,安裝了2套oracle client,一套pl sql使用訪問o...

分布式事務 分布式事務的實現

如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...

分布式事務的簡單理解

單獨的系統中,事務是本地事務。而在分布式系統中,乙個業務的完成需要及多個系統,需要涉及多個資料來源。比如訂單系統,下訂單這個業務需要涉及支付系統,庫存系統,物流系統等,假如庫存系統出現問題,事務回滾,那麼其他子系統的事務也必須回滾,否則就會出現事務不一致,導致下訂單操作出現錯誤。多個資料來源,就需要...