分布式事務(wù)理論基礎(chǔ)

事務(wù)是數(shù)據(jù)庫執(zhí)行過程中的一個邏輯單位脯丝,由一個有限的數(shù)據(jù)庫操作序列構(gòu)成脓钾。
事務(wù)有四個特性尼夺,習慣上被稱為 ACID 特性:

  • Atomicity(原子性)
  • Consistency(一致性)
  • Isolation(隔離性)
  • Durability(持久性)

本地事物

在系統(tǒng)發(fā)展初期斩跌,單體應(yīng)用對應(yīng)一個數(shù)據(jù)庫绍些,整個服務(wù)操作只涉及一個數(shù)據(jù)庫資源,通過數(shù)據(jù)庫自帶的事務(wù)很容易實現(xiàn) ACID耀鸦,這類基于單個服務(wù)單一數(shù)據(jù)庫資源訪問的事務(wù)柬批,被稱為本地事務(wù)(Local Transaction)。

分布式事務(wù)

隨著互聯(lián)網(wǎng)的發(fā)展袖订,微服務(wù)架構(gòu)大規(guī)模的普及氮帐,軟件系統(tǒng)由原來的單體應(yīng)用轉(zhuǎn)變?yōu)榉植际綉?yīng)用。分布式系統(tǒng)一般由多個獨立的子系統(tǒng)組成洛姑,多個子系統(tǒng)通過網(wǎng)絡(luò)通信互相協(xié)作配合完成各個功能上沐。

分布式事務(wù)是指事務(wù)的參與者、支持事務(wù)的服務(wù)器楞艾、資源服務(wù)器以及事務(wù)管理器分別位于不同的分布式系統(tǒng)的不同節(jié)點之上参咙。比如在一個電商系統(tǒng)中,一條訂單的生成涉及庫存硫眯、訂單蕴侧、支付等不同的服務(wù),不同的服務(wù)之間要么全成功两入、要么全失敗净宵,保證事務(wù)的 ACID 特性。

本質(zhì)上來說裹纳,分布式事務(wù)就是為了保證不同數(shù)據(jù)庫的數(shù)據(jù)一致性择葡。

在分布式系統(tǒng)中數(shù)據(jù)一致性又可以劃分出多個一致性模型

  • 強一致性:任何一次讀都能讀到某個數(shù)據(jù)的最近一次寫的數(shù)據(jù)。系統(tǒng)中的所有進程痊夭,看到的操作順序刁岸,都和全局時鐘下的順序一致。簡言之她我,在任意時刻虹曙,所有節(jié)點中的數(shù)據(jù)是一樣的迫横。

  • 弱一致性:數(shù)據(jù)更新后,如果能容忍后續(xù)的訪問只能訪問到部分或者全部訪問不到酝碳,則是弱一致性矾踱。

  • 最終一致性:不保證在任意時刻任意節(jié)點上的同一份數(shù)據(jù)都是相同的,但是隨著時間的遷移疏哗,不同節(jié)點上的同一份數(shù)據(jù)總是在向趨同的方向變化呛讲。簡單說,就是在一段時間后返奉,節(jié)點間的數(shù)據(jù)會最終達到一致狀態(tài)贝搁。

在解決分布式事物的數(shù)據(jù)一致性問題上,產(chǎn)生了多個相關(guān)的理論芽偏。

CAP 理論

CAP 定理又被稱作布魯爾定理雷逆,是加州大學的計算機科學家布魯爾在 2000 年提出的一個猜想。2002 年污尉,麻省理工學院的賽斯·吉爾伯特和南习蛘埽·林奇發(fā)表了布魯爾猜想的證明,使之成為分布式計算領(lǐng)域公認的一個定理被碗。

  • C : Consistency 一致性 , 所有實例節(jié)點同一時間看到是相同的數(shù)據(jù)
  • A : Availability 可用性 , 不管是否成功某宪,確保每一個請求都能接收到響應(yīng)
  • P : Partition tolerance 分區(qū)容錯性 , 系統(tǒng)任意分區(qū)后,在網(wǎng)絡(luò)故障時锐朴,仍能操作

CAP 理論是指在一個分布式系統(tǒng)(指互相連接并共享數(shù)據(jù)的節(jié)點的集合)中兴喂,當涉及讀寫操作時,只能保證一致性焚志、可用性瞻想、分區(qū)容錯性者中的兩個,另外一個必須被犧牲。

在真實的分布式環(huán)境下滴肿,如果我們選擇了 CA(一致性 + 可用性) 而放棄了 P(分區(qū)容錯性),那么當發(fā)生分區(qū)現(xiàn)象時泼差,為了保證 C(一致性),系統(tǒng)需要禁止寫入堆缘,當有寫入請求時滔灶,系統(tǒng)返回 error(例如,當前系統(tǒng)不允許寫入)吼肥,這又和 A(可用性) 沖突了麻车,因為 A(可用性)要求返回 no error 和 no timeout。因此雖然在 CAP 理論定義是三個要素中只能取兩個动猬,但放到分布式環(huán)境下來,必須選擇 P(分區(qū)容錯)要素表箭,因為網(wǎng)絡(luò)本身無法做到 100% 可靠赁咙,有可能出故障,所以分區(qū)是一個必然的現(xiàn)象免钻。
也就說在真是環(huán)境下我們只能選擇 CP(一致性 + 分區(qū)容錯性) 或者 AP (可用性 + 分區(qū)容錯性)架構(gòu)彼水,在一致性和可用性做折中選擇极舔。

雖然 CAP 理論告訴我們分布式系統(tǒng)只能選擇 AP 或者 CP,但實際上并不是說整個系統(tǒng)只能選擇 AP 或者 CP姆怪,在 CAP 理論落地實踐時,我們需要將系統(tǒng)內(nèi)的數(shù)據(jù)按照不同的應(yīng)用場景和要求進行分類稽揭,每類數(shù)據(jù)選擇不同的策略(CP 還是 AP),而不是直接限定整個系統(tǒng)所有數(shù)據(jù)都是同一策略事镣。

BASE 理論--CAP 理論的延伸

由于在分布式系統(tǒng)中 C、A揪胃、P 三者都無法拋棄,但 CAP 定理限制三者無法同時滿足随闪,這種情況,我們會選擇盡量靠近 CAP 定理铐伴,即盡量讓 C、A当宴、P 都滿足泽疆,在此所趨下户矢,出現(xiàn)了 BASE 定理殉疼。

BASE 是 Basically Available(基本可用)捌年、Soft state(軟狀態(tài))和 Eventually consistent (最終一致性)三個短語的縮寫驱证。核心思想是即使無法做到強一致性(CAP 的一致性就是強一致性)延窜,但應(yīng)用可以采用適合的方式達到最終一致性抹锄。

  • BA:Basically Available 基本可用,分布式系統(tǒng)在出現(xiàn)故障的時候伙单,允許損失部分可用性,即保證核心可用吻育。
    電商大促時,為了應(yīng)對訪問量激增布疼,部分用戶可能會被引導(dǎo)到降級頁面,服務(wù)層也可能只提供降級服務(wù)游两。這就是損失部分可用性的體現(xiàn)。
  • S:Soft State 軟狀態(tài)贱案,允許系統(tǒng)存在中間狀態(tài),而該中間狀態(tài)不會影響系統(tǒng)整體可用性宝踪。
    分布式存儲中一般一份數(shù)據(jù)至少會有三個副本,允許不同節(jié)點間副本同步的延時就是軟狀態(tài)的體現(xiàn)瘩燥。mysql replication 的異步復(fù)制也是一種體現(xiàn)。
  • E: Eventual Consistency 最終一致性厉膀, 系統(tǒng)中的所有數(shù)據(jù)副本經(jīng)過一定時間后,最終能夠達到一致的狀態(tài)。

BASE 理論本質(zhì)上是對 CAP 的延伸和補充卓鹿,更具體地說,是對 CAP 中 AP 方案的一個補充吟孙。

BASE和ACID的區(qū)別與聯(lián)系

  • ACID是傳統(tǒng)數(shù)據(jù)庫常用的設(shè)計理念, 追求強一致性模型聚蝶。
  • BASE支持的是大型分布式系統(tǒng)藻治,提出通過犧牲強一致性獲得高可用性

ACID和BASE代表了兩種截然相反的設(shè)計哲學。
總的來說桩卵,BASE 理論面向大型高可用可擴展的分布式系統(tǒng),與ACID這種強一致性模型不同雏节,常常是犧牲強一致性來獲得可用性,并允許數(shù)據(jù)在一段時間是不一致的钩乍。雖然兩者處于(一致性-可用性)分布圖的兩級,但兩者并不是孤立的寥粹,對于分布式系統(tǒng)來說,往往依據(jù)業(yè)務(wù)的不同和使用的系統(tǒng)組件不同涝涤,而需要靈活的調(diào)整一致性要求,也因此妄痪,常常會組合使用ACID和BASE。

柔性事務(wù)

不同于 ACID 的剛性事務(wù)裳瘪,在分布式場景下基于 BASE 理論,就出現(xiàn)了柔性事務(wù)的概念彭羹。柔性事務(wù)下,在不影響系統(tǒng)整體可用性的情況下(Basically Available 基本可用)派殷,允許系統(tǒng)存在數(shù)據(jù)不一致的中間狀態(tài)(Soft State 軟狀態(tài))墓阀,在經(jīng)過數(shù)據(jù)同步的延時之后毡惜,最終數(shù)據(jù)能夠達到一致斯撮。并不是完全放棄了 ACID,而是通過放寬一致性要求勿锅,借助本地事務(wù)來實現(xiàn)最終分布式事務(wù)一致性的同時也保證系統(tǒng)的吞吐枣氧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垮刹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荒典,更是在濱河造成了極大的恐慌,老刑警劉巖种蝶,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卧斟,死亡現(xiàn)場離奇詭異,居然都是意外死亡盯滚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門魄藕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人背率,你說我怎么就攤上這事〗慌牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵埃篓,是天一觀的道長根资。 經(jīng)常有香客問我,道長玄帕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任睛低,我火速辦了婚禮,結(jié)果婚禮上钱雷,老公的妹妹穿的比我還像新娘吹零。我一直安慰自己罩抗,他們只是感情好灿椅,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著操刀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骨坑。 梳的紋絲不亂的頭發(fā)上柬采,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音粉捻,去河邊找鬼。 笑死肩刃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的盈包。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼垂谢,長吁一口氣:“原來是場噩夢啊……” “哼疮茄!你這毒婦竟也來了滥朱?” 一聲冷哼從身側(cè)響起力试,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缰犁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帅容,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年遣钳,在試婚紗的時候發(fā)現(xiàn)自己被綠了麦乞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕴茴。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡姐直,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出声畏,到底是詐尸還是另有隱情,我是刑警寧澤能扒,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布辫狼,位于F島的核電站初斑,受9級特大地震影響膨处,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜真椿,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望测摔。 院中可真熱鬧,春花似錦锋八、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽檀轨。三九已至,卻和暖如春参萄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拧揽。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工腺占, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留痒谴,地道東北人衰伯。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓积蔚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尽爆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容