指一次大的操作由不同的小操作組成的,這些小的操作分布在不同的伺服器上,分布式事務需要保證這些小操作要麼全部成功,要麼全部失敗。從本質上來說,分布式事務就是為了保證不同資料庫的資料一致性。
1 資料庫分庫分表
當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單的說就是原來的乙個資料庫變成了多個資料庫。這時候,如果乙個操作既訪問01庫,又訪問02庫,而且要保證資料的一致性,那麼就要用到分布式事務。
2 應用soa化
所謂的soa化,就是業務的服務化。比如原來單機支撐了整個電商**,現在對整個**進行拆解,分離出了訂單中心、使用者中心、庫存中心。對於訂單中心,有專門的資料庫儲存訂單資訊,使用者中心也有專門的資料庫儲存使用者資訊,庫存中心也會有專門的資料庫儲存庫存資訊。這時候如果要同時對訂單和庫存進行操作,那麼就會涉及到訂單資料庫和庫存資料庫,為了保證資料一致性,就需要用到分布式事務。
1 基於xa協議的兩階段提交
xa是乙個分布式事務協議,由tuxedo提出。xa中大致分為兩部分:事務管理器和本地資源管理器。其中本地資源管理器往往由資料庫實現,比如oracle、db2這些商業資料庫都實現了xa介面,而事務管理器作為全域性的排程者,負責各個本地資源的提交和回滾。
2.訊息事務+最終一致性
所謂的訊息事務就是基於訊息中介軟體的兩階段提交,本質上是對訊息中介軟體的一種特殊利用,它是將本地事務和發訊息放在了乙個分布式事務裡,保證要麼本地操作成功成功並且對外發訊息成功,要麼兩者都失敗,開源的rocketmq就支援這一特性
3.tcc程式設計模式分布式事務,本質上是對多個資料庫的事務進行統一控制,按照控制力度可以分為:不控制、部分控制和完全控制。不控制就是不引入分布式事務,部分控制就是各種變種的兩階段提交,包括上面提到的訊息事務+最終一致性、tcc模式,而完全控制就是完全實現兩階段提交。部分控制的好處是併發量和效能很好,缺點是資料一致性減弱了,完全控制則是犧牲了效能,保障了一致性,具體用哪種方式,最終還是取決於業務場景。
一次事務只連線乙個支援事務的資料庫(一般來說都是關係型資料庫)
事務的執行結果保證acid
會用到資料庫鎖
本地事務和分布式事務
1 本地事務acid 和 cap中的ca區別 本地事務 a 原子性 乙個事務中所有操作,要不全部完成,要不全部不完成,事務在執行過程中發生錯誤,會被回滾到事務開始前的狀態,就像這個事務沒有被執行過一樣。c 一致性 事務的一致性指在乙個事務執行之前和執行之後資料庫都必須處於一致性狀態,如果事務成功完成...
本地事務 全域性事務 分布式事務
本地事務 事務隔離級別 select tx isolation tx isolation repeatable read 1 row in set 0.00 sec 開啟事務 執行緒1執行如下。use order db begin update orders set order money orde...
分布式事務和什麼是本地事務
事務型別 事務可以分為本地事務和分布式事務兩種型別。這兩種事務型別是根據訪問並更新的資料資源的多少來進行區分的。本地事務是在單個資料來源上進行資料的訪問和更新,而分布式事務是跨越多個資料來源來進行資料的訪問和更新。在這裡要說的事務是基於資料庫這種資料來源的 什麼是分布式事務 transaction ...