1. 程式人生 > >分布式事務及其一致性協議

分布式事務及其一致性協議

比較 單元 隔離級別 中心 asi 支持 系統數據 原子操作 space

一:什麽是事務。

事務是由一系列對系統中的數據進行訪問和更新的操作所組成的一個程序執行邏輯單元。狹義上的事務指的就是數據庫的事務。

二:事務(ACID)的特性。

事務具有四個特性:
1.一致性(Consistency):事務的操作需要從一個一致性狀態到另一個一致性狀態。如果一次事務中,有些操作更新成功,有些操作更新失敗,這就是不一致的。

2.原子性(Automicity):指事務是一個原子操作序列單元。一個事務下的操作要麽全部執行成功,要麽全部執行不成功。

3.持久性(Durability):指事務一旦提交,對數據庫中的數據的變更操作就是永久的。

4.隔離性(Isolation):指不同的事務操作互不影響。

事務的隔離級別:

隔離級別特點
讀未提交(read uncommitted)另一事務可以看見一個事務提交前的所有狀態。
讀已提交(read committed)只允許讀取到事務提交之後的狀態。
可重復讀(repeatable read)只允許讀取到事務開始時刻的狀態。
序列化(serializable)事務串行執行。

關於讀已提交和可重復讀的區別:
(1)讀已提交(又叫不可重復讀)隔離級別下,如果事務A的一個操作讀取了一條記錄,然後事務B修改了這條記錄,接著事務A的另一個操作再讀取這條記錄的時候就發現被修改了。所以對於讀已提交來說,需要註意的是另一個事務的更新或是刪除操作。

(2)可重復讀隔離級別下,如果事務A的一個操作讀取了一張表的記錄,事務B不能對這張表的數據進行刪除或是更新,這樣就保障了可重復讀,但是事務B是可以對這張表進行插入操作的,事務B向這張表插入一條記錄後,事務A的另一個操作再讀取這張表的數據,就發現多了一條記錄,這就是幻讀的產生。所以對於可重復讀來說,需要註意的是另一個事務的新增操作。

三:什麽是分布式系統。

首先了解下從集中式到分布式的發展歷程

20世紀60年代,人類發明了大型主機。大型主機具有超強的計算能力和I/O處理能力,在穩定性和安全性上也有良好的表現,因此集中式的計算機架構也就流行了起來。集中式系統是將一臺或是幾臺計算機作為中心節點,所有的操作運算和數據的存儲都是中心節點完成。一方面是大型主機價格昂貴,技術要求比較高,對主機進行擴容困難,一臺主機不可用將造成整個系統不可用,另一方面是小型機和PC的發展,集中式架構逐步退出歷史舞臺,分布式架構走進人們的視野。

分布式系統指的是將一個硬件或是軟件組件分布在不同的網絡計算機上,彼此之間通過消息傳遞進行通信和協調的系統。

四:分布式系統的經典理論。

1.CAP理論
CAP指的是Consistency(一致性)、Availability(可用性)和Partition tolerance(分區容錯性)。

(1)一致性:指數據在多個副本之間能夠保持一致的特性。
有以下三種一致性級別:
a.強一致性:要求對系統數據的修改可以立刻讀取,用戶體驗性最好。
b.弱一致性:不保證什麽時候能達到一致性,但是盡可能保證在某個時間級別後,數據達到一致性。
c.最終一致性:弱一致性的一個特例,系統會保證在一定時間內,能夠達到一個數據一致的狀態。

(2)可用性:指系統提供的服務需要一直處於可用狀態,對於用戶的每一個操作請求總是能夠在有限的時間內返回結果。

(3)分區容錯性:分布式系統在遇到任何網絡分區故障時,都需要能夠保證一致性和可用性,除非整個網絡都發生了故障。

2.BASE理論

BASE理論指的是Basically Avaliable(基本可用)、Soft state(軟狀態)和Eventually consistent(最終一致性)。

解釋一下軟狀態,指的是允許系統中的數據存在中間狀態,並認為該中間狀態的存在不會影響系統的整體可用性。也就是允許不同數據副本的數據同步允許延遲。

五:什麽是分布式事務

現在小明想要從銀行A轉500塊錢到銀行B,因為兩家不同的銀行,各自有自己的系統,自己的數據庫,銀行A先在小明的賬戶上扣除500塊錢,然後銀行B準備在小明的賬戶上加上500塊錢,然而網絡故障了,銀行B的操作沒有成功,這時候該怎麽辦呢?銀行B怎麽告訴銀行A自己操作沒成功,讓銀行A進行操作回滾呢?

分布式事務是指事務的參與者、支持事務的服務器,資源管理器以及事務管理器分別位於分布式系統的不同節點上。一個分布式事務會涉及多個數據源或是業務系統的操作。

六:分布式事務的一致性協議

如果一個操作涉及多個分布式節點,為了保證事務的ACID特性,需要引入一個“協調者”組件來統一調度所有分布式節點的執行邏輯,這些被調度的分布式節點被稱為“參與者”。協調者負責調度參與者的行為,並最終決定這些參與者是否真正地提交事務。

1.二階段提交協議(2PC:Two-Phase Commit)
技術分享圖片

缺點:
(1)各個參與者需要等待其他參與者的響應。
(2)如果協調者出現故障,其他參與者會一直鎖定資源,無法完成事務操作。
(3)可能會因為網絡原因導致只有部分參與者收到commit請求,部分參與者沒有收到commit請求而出現數據不一致現象。
(4)協調者可能因為網絡故障無法收到全部參與者的響應信息,只能依靠自身的超時機制決定是否中斷事務。

2.三階段提交協議(3PC:Three-Phase Commit)

過程:
技術分享圖片

技術分享圖片


分布式事務及其一致性協議