- 區(qū)塊鏈原理、設(shè)計與應(yīng)用(第2版)
- 楊保華 陳昌
- 1220字
- 2020-08-11 18:08:01
4.5 ACID原則與多階段提交
1.ACID原則
ACID,即Atomicity(原子性)、Consistency(一致性)、Isolation(隔離性)、Durability(持久性)四種特性的縮寫。
ACID也是一種比較著名的描述一致性的原則,通常出現(xiàn)在分布式數(shù)據(jù)庫等基于事務(wù)過程的系統(tǒng)中。具體來說,ACID原則描述了分布式數(shù)據(jù)庫需要滿足的一致性需求,同時允許付出可用性的代價。四種特性定義如下。
●Atomicity:每次事務(wù)是原子的,事務(wù)包含的所有操作要么全部成功執(zhí)行,要么全部不執(zhí)行。一旦有操作失敗,則需要回退狀態(tài)到執(zhí)行事務(wù)之前。
●Consistency:數(shù)據(jù)庫的狀態(tài)在事務(wù)執(zhí)行前后是一致的和完整的,無中間狀態(tài),即只能處于成功事務(wù)提交后的狀態(tài)。
●Isolation:各種事務(wù)可以并發(fā)執(zhí)行,但彼此之間互相不影響。按照標(biāo)準(zhǔn)SQL規(guī)范,隔離等級從弱到強可以分為未授權(quán)讀取、授權(quán)讀取、可重復(fù)讀取和串行化四種。
●Durability:狀態(tài)的改變是持久的,不會失效。一旦某個事務(wù)提交,則它造成的狀態(tài)變更就是永久性的。
與ACID相對的一個原則是eBay技術(shù)專家Dan Pritchett提出的BASE(Basic Availability,Soft-state,Eventual consistency)原則。BASE原則面向大型高可用分布式系統(tǒng),主張犧牲對強一致性的追求,而實現(xiàn)最終一致性,以此換取一定的可用性。
注意
ACID和BASE在英文中分別是“酸”和“堿”,看似對立,實則是對CAP三特性的不同取舍。
2.兩階段提交
對分布式事務(wù)一致性的研究成果包括著名的兩階段提交算法(Two-Phase Commit,2PC)和三階段提交算法(Three-Phase Commit,3PC)。
兩階段提交算法最早由Jim Gray于1979年在論文“Notes on Database Operating Systems”中提出。其基本思想十分簡單,既然在分布式場景下,直接提交事務(wù)可能出現(xiàn)各種故障和沖突,那么可將其分解為預(yù)提交和正式提交兩個階段,規(guī)避沖突的風(fēng)險。
●預(yù)提交:協(xié)調(diào)者(coordinator)發(fā)起提交某個事務(wù)的申請,各參與執(zhí)行者(participant)需要嘗試進(jìn)行提交并反饋是否能完成。
●正式提交:協(xié)調(diào)者如果得到所有執(zhí)行者的成功答復(fù),則發(fā)出正式提交請求。如果成功完成,則算法執(zhí)行成功。
在此過程中任何步驟出現(xiàn)問題(例如預(yù)提交階段有執(zhí)行者回復(fù)預(yù)計無法完成提交),則需要回退。
兩階段提交算法因為其簡單容易實現(xiàn)的優(yōu)點,在關(guān)系型數(shù)據(jù)庫等系統(tǒng)中被廣泛應(yīng)用。當(dāng)然,其缺點也很明顯:整個過程因需要同步阻塞而導(dǎo)致性能一般較差;存在單點問題,較壞情況下可能一直無法完成提交;可能產(chǎn)生數(shù)據(jù)不一致的情況(例如協(xié)調(diào)者和執(zhí)行者在第二個階段出現(xiàn)故障)。
3.三階段提交
三階段提交針對兩階段提交算法第一階段中可能阻塞部分執(zhí)行者的情況進(jìn)行了優(yōu)化。具體來說,將預(yù)提交階段進(jìn)一步拆成兩個步驟:嘗試預(yù)提交和預(yù)提交。
三階段提交完整過程如下:
●嘗試預(yù)提交。協(xié)調(diào)者詢問執(zhí)行者是否能提交某個事務(wù)。執(zhí)行者需要返回答復(fù),但無須執(zhí)行提交。這就避免出現(xiàn)部分執(zhí)行者被無效阻塞的情況。
●預(yù)提交。協(xié)調(diào)者檢查收集到的答復(fù),如果全部為真,則發(fā)起提交事務(wù)請求。各參與執(zhí)行者需要嘗試進(jìn)行提交并反饋是否能完成。
●正式提交。協(xié)調(diào)者如果得到所有執(zhí)行者的成功答復(fù),則發(fā)出正式提交請求。如果成功完成,則算法執(zhí)行成功。
其實,無論兩階段還是三階段提交,都只是一定程度上緩解了提交沖突的問題,并無法一定保證系統(tǒng)的一致性。首個有效的算法是后來提出的Paxos算法。
- 管理者而非MBA(珍藏版)
- 人人都是項目經(jīng)理
- 項目管理基礎(chǔ)(第五版)
- 課改的足跡
- 微信公眾號營銷實戰(zhàn)
- 中國互聯(lián)網(wǎng)發(fā)展報告(2009)
- 小型項目管理:給初級項目經(jīng)理的完整指南
- 項目革命:如何在項目驅(qū)動的世界里達(dá)成目標(biāo)
- 帝王將相管理啟示
- 中國互聯(lián)網(wǎng)發(fā)展報告2018
- 陜西省地質(zhì)災(zāi)害防治條例
- 快公司 開顱工具書:把創(chuàng)意鑿出來
- 項目運營常見問題清單
- 項目績效管理:項目考核與監(jiān)控指標(biāo)的設(shè)計和量化(第3版)
- 高情商的項目經(jīng)理:人際關(guān)系雙贏(原書第2版)