一:什麼是事務。html
事務是由一系列對系統中的數據進行訪問和更新的操做所組成的一個程序執行邏輯單元。狹義上的事務指的就是數據庫的事務。數據庫
二:事務(ACID)的特性。安全
事務具備四個特性:
1.一致性(Consistency):事務的操做須要從一個一致性狀態到另外一個一致性狀態。若是一次事務中,有些操做更新成功,有些操做更新失敗,這就是不一致的。服務器
2.原子性(Automicity):指事務是一個原子操做序列單元。一個事務下的操做要麼所有執行成功,要麼所有執行不成功。網絡
3.持久性(Durability):指事務一旦提交,對數據庫中的數據的變動操做就是永久的。架構
4.隔離性(Isolation):指不一樣的事務操做互不影響。分佈式
事務的隔離級別:spa
隔離級別 | 特色 |
讀未提交(read uncommitted) | 另外一事務能夠看見一個事務提交前的全部狀態。 |
讀已提交(read committed) | 只容許讀取到事務提交以後的狀態。 |
可重複讀(repeatable read) | 只容許讀取到事務開始時刻的狀態。 |
序列化(serializable) | 事務串行執行。 |
關於讀已提交和可重複讀的區別:
(1)讀已提交(又叫不可重複讀)隔離級別下,若是事務A的一個操做讀取了一條記錄,而後事務B修改了這條記錄,接着事務A的另外一個操做再讀取這條記錄的時候就發現被修改了。因此對於讀已提交來講,須要注意的是另外一個事務的更新或是刪除操做。3d
(2)可重複讀隔離級別下,若是事務A的一個操做讀取了一張表的記錄,事務B不能對這張表的數據進行刪除或是更新,這樣就保障了可重複讀,可是事務B是能夠對這張表進行插入操做的,事務B向這張表插入一條記錄後,事務A的另外一個操做再讀取這張表的數據,就發現多了一條記錄,這就是幻讀的產生。因此對於可重複讀來講,須要注意的是另外一個事務的新增操做。htm
三:什麼是分佈式系統。
首先了解下從集中式到分佈式的發展歷程
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)
過程:
參考資料:
《從Paxos到ZooKeeper分佈式一致性原理與實踐》
不可重複讀和幻讀的區別