1. 程式人生 > >分布式事務處理基本原理

分布式事務處理基本原理

分布式系統 保存 idt 用戶 新的 標準 nbsp 對數 兩個

事務是有一系列對系統中數據進行訪問與更新的操作組成的一個基本的程序邏輯執行單元。引入事務的概念有兩個目的,第一,事務對多個並發訪問的應用程序進行隔離,防止彼此幹擾,第二,事務為數據庫操作序列提供了一個失敗回復的方法,同時如果數據庫處於異常狀態,事務提供了保持一致性的方法。

事務具有最基本的四個特性:原子性(Atomicity),一致性(consistency),隔離性(Isolation)和持久性(Durability)。簡稱為ACID事務特性。

原子性:

事務必須是一個原子的執行序列,即事務包含的一系列操作執行過程只有兩個結果:全部執行成功或全部失敗,若有任何一項任務失敗,則整個事務都被撤銷,並回滾到事務執行之前的系統狀態。

一致性:

事務的執行過程不可以破壞系統的一致性,事務執行之前和執行之後,系統都必須處於一致性狀態,事務的執行會使系統從一個一致性狀態跳轉的另一個狀態,如果事務在執行過程發生錯誤導致只有一部分任務被寫入系統,那事務被重新執行時就會重新執行已寫入數據庫的操作,導致系統不一致。

隔離性

不同事務的執行過程不能相互幹擾,每個事務都有各自獨立的數據空間,在標準SQL規範中,有四個事務隔離級別:

1)未授權讀取:事務在對數據修改過程中,允許臟讀,即允許另外的事務在修改過程訪問數據,造成修改前後讀取數據不一致

2)授權讀取:事務在修改過程不允許其他事務進行讀,其他事務只能在修改讀取數據的事務執行過程結束後進行讀取,但事務執行過程也會允許不可重復讀取:例如A將i從1修改到2,B將i從2修改到3,事務C讀取i時可以讀取到2或3。

3)可重復讀取:保證一個事務在讀取過程數據永遠一致,但會出現幻影數據,即事務被重復執行多次,每次的數據讀取結果不同。

4)串行化:所有事務都被串行執行。

為了保證數據庫並發性能,一般都支持授權讀取,可能出現並發問題時用樂觀鎖或悲觀鎖進行事務控制。

持久性:事務提交之後對數據庫的影響是永久的,一旦數據庫掛掉,執行過的事務結果可以被恢復。

CAP定理:

一個分布式系統不可能同時滿足一致性(Consistency),可用性(Availability)和分區容錯性(Partition tolerance),最多只能滿足兩個。

1)一致性:數據多個副本內容是否保持一致。不同副本一般保存在不同節點中。如果對其中一個副本更改,所有用戶可獲得最新的數據,則系統保持的是強一致性,如果系統中的副本在一段時間後可以達到一致,則系統滿足的是最終一致性

2)可用性:系統的服務必須一直處於可用狀態,對用戶的每一個請求總是能在一段時間內返回結果。一段時間是系統設計之初就指定好的指標,也可稱為響應時間。

3)分區容錯性:分布式系統在遇到任何網絡分區故障時,仍然需要能夠對外保持一致性和可用性的服務,除非整個網絡都發生了故障。網絡分區是指不同的節點在不同的網絡間,網絡之間無法聯通,出現故障,分布式系統被劃分成了孤立的區域。

下面是CAP定理的應用:

放棄CAP定理

結果

放棄C

放棄P就是將所有數據都放置在一個節點上,這就放棄了數據的可擴展性。

放棄A

放棄可用性是指系統在發生故障時,收到影響的服務需要等待一段時間,在這段時間內系統是不可用的。

放棄P

放棄一致性是指放棄系統強一致性采用最終一致性

分布式事務處理基本原理