天天看點

分布式事務及其一緻性協定

一:什麼是事務。

事務是由一系列對系統中的資料進行通路和更新的操作所組成的一個程式執行邏輯單元。狹義上的事務指的就是資料庫的事務。

二:事務(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)

過程:

分布式事務及其一緻性協定
分布式事務及其一緻性協定