再有人問你分布式事務,把這篇文章砸過去給他

事務的具體定義

    事務提供一種機制將一個活動涉及的所有操作納入到一個不可分割的執(zhí)行單元类垦,組成事務的所有操作只有在所有操作均能正常執(zhí)行的情況下方能提交狈邑,只要其中任一操作執(zhí)行失敗,都將導致整個事務的回滾蚤认。簡單地說米苹,事務提供一種“要么什么都不做,要么做全套(All or Nothing)”機制
file

數(shù)據(jù)庫本地事務

說到數(shù)據(jù)庫事務就不得不說砰琢,數(shù)據(jù)庫事務中的四大特性蘸嘶,ACID

A:原子性(Atomicity)

    一個事務(transaction)中的所有操作,要么全部完成陪汽,要么全部不完成训唱,不會結束在中間某個環(huán)節(jié)。事務在執(zhí)行過程中發(fā)生錯誤挚冤,會被回滾(Rollback)到事務開始前的狀態(tài)况增,就像這個事務從來沒有執(zhí)行過一樣。

    就像你買東西要么交錢收貨一起都執(zhí)行训挡,要么要是發(fā)不出貨澳骤,就退錢。

C:一致性(Consistency)

    事務的一致性指的是在一個事務執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫都必須處于一致性狀態(tài)澜薄。如果事務成功地完成为肮,那么系統(tǒng)中所有變化將正確地應用,系統(tǒng)處于有效狀態(tài)肤京。如果在事務中出現(xiàn)錯誤弥锄,那么系統(tǒng)中的所有變化將自動地回滾,系統(tǒng)返回到原始狀態(tài)。

I:隔離性(Isolation)

    指的是在并發(fā)環(huán)境中籽暇,當不同的事務同時操縱相同的數(shù)據(jù)時,每個事務都有各自的完整數(shù)據(jù)空間饭庞。由并發(fā)事務所做的修改必須與任何其他并發(fā)事務所做的修改隔離戒悠。事務查看數(shù)據(jù)更新時,數(shù)據(jù)所處的狀態(tài)要么是另一事務修改它之前的狀態(tài)舟山,要么是另一事務修改它之后的狀態(tài)绸狐,事務不會查看到中間狀態(tài)的數(shù)據(jù)。

打個比方累盗,你買東西這個事情寒矿,是不影響其他人的

D:持久性(Durability)

    指的是只要事務成功結束,它對數(shù)據(jù)庫所做的更新就必須永久保存下來若债。即使發(fā)生系統(tǒng)崩潰符相,重新啟動數(shù)據(jù)庫系統(tǒng)后,數(shù)據(jù)庫還能恢復到事務成功結束時的狀態(tài)蠢琳。

打個比方啊终,你買東西的時候需要記錄在賬本上,即使老板忘記了那也有據(jù)可查傲须。

file

簡單而言蓝牲,ACID是從不同維度描述事務的特性:

  • 原子性 —— 事務操作的整體性
  • 一致性 —— 事務操作下數(shù)據(jù)的正確性
  • 隔離性 —— 事務并發(fā)操作下數(shù)據(jù)的正確性
  • 持久性 —— 事務對數(shù)據(jù)修改的可靠性

一個支持事務(Transaction)的數(shù)據(jù)庫,需要具有這4種特性泰讽,否則在事務過程當中無法保證數(shù)據(jù)的正確性例衍,處理結果極可能達不到請求方的要求。

什么時候使用數(shù)據(jù)庫事務

    在介紹完事務基本概念之后已卸,什么時候該使用數(shù)據(jù)庫事務佛玄?

簡單而言,就是業(yè)務上有一組數(shù)據(jù)操作咬最,需要如果其中有任何一個操作執(zhí)行失敗翎嫡,整組操作全部不執(zhí)行并恢復到未執(zhí)行狀態(tài),要么全部成功永乌,要么全部失敗惑申。

    在使用數(shù)據(jù)庫事務時需要注意,盡可能短的保持事務翅雏,修改多個不同表的數(shù)據(jù)的冗長事務會嚴重妨礙系統(tǒng)中的所有其他用戶圈驼,這很有可能導致一些性能問題。

什么是分布式事務

分布式產生背景與概念

    隨著互聯(lián)網(wǎng)快速發(fā)展望几,微服務绩脆,SOA等服務架構模式正在被大規(guī)模的使用,現(xiàn)在分布式系統(tǒng)一般由多個獨立的子系統(tǒng)組成,多個子系統(tǒng)通過網(wǎng)絡通信互相協(xié)作配合完成各個功能靴迫。

    有很多用例會跨多個子系統(tǒng)才能完成惕味,比較典型的是電子商務網(wǎng)站的下單支付流程,至少會涉及交易系統(tǒng)和支付系統(tǒng)玉锌,而且這個過程中會涉及到事務的概念名挥,即保證交易系統(tǒng)和支付系統(tǒng)的數(shù)據(jù)一致性,此處我們稱這種**跨系統(tǒng)的事務為分布式事務**主守,具體一點而言禀倔,分布式事務是指事務的參與者、支持事務的服務器参淫、資源服務器以及事務管理器分別位于不同的分布式系統(tǒng)的不同節(jié)點之上救湖。

舉個互聯(lián)網(wǎng)常用的交易業(yè)務為例:

file
    上圖中包含了庫存和訂單兩個獨立的微服務,每個微服務維護了自己的數(shù)據(jù)庫涎才。在交易系統(tǒng)的業(yè)務邏輯中鞋既,一個商品在下單之前需要先調用庫存服務,進行扣除庫存憔维,再調用訂單服務涛救,創(chuàng)建訂單記錄。
file

可以看到业扒,如果多個數(shù)據(jù)庫之間的數(shù)據(jù)更新沒有保證事務检吆,將會導致出現(xiàn)子系統(tǒng)數(shù)據(jù)不一致,業(yè)務出現(xiàn)問題程储。

分布式事務的難點

事務的原子性
    事務操作跨不同節(jié)點蹭沛,當多個節(jié)點某一節(jié)點操作失敗時,需要保證多節(jié)點操作的**要么什么都不做章鲤,要么做全套(All or Nothing)**的原子性摊灭。
事務的一致性
    當發(fā)生網(wǎng)絡傳輸故障或者節(jié)點故障,節(jié)點間數(shù)據(jù)復制通道中斷败徊,在進行事務操作時需要保證數(shù)據(jù)一致性帚呼,保證事務的任何操作都不會使得數(shù)據(jù)違反數(shù)據(jù)庫定義的約束、觸發(fā)器等規(guī)則皱蹦。
事務的隔離性
     事務隔離性的本質就是如何正確多個并發(fā)事務的處理的讀寫沖突和寫寫沖突煤杀,因為在分布式事務控制中,可能會出現(xiàn)提交不同步的現(xiàn)象沪哺,這個時候就有可能出現(xiàn)“部分已經提交”的事務沈自。此時并發(fā)應用訪問數(shù)據(jù)如果沒有加以控制,有可能出現(xiàn)“臟讀”問題辜妓。

本文由傳智教育博學谷狂野架構師教研團隊發(fā)布枯途。

如果本文對您有幫助忌怎,歡迎關注點贊;如果您有任何建議也可留言評論私信酪夷,您的支持是我堅持創(chuàng)作的動力榴啸。

轉載請注明出處!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末晚岭,一起剝皮案震驚了整個濱河市插掂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腥例,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酝润,死亡現(xiàn)場離奇詭異燎竖,居然都是意外死亡,警方通過查閱死者的電腦和手機要销,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門构回,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人疏咐,你說我怎么就攤上這事纤掸。” “怎么了浑塞?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵借跪,是天一觀的道長。 經常有香客問我酌壕,道長掏愁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任卵牍,我火速辦了婚禮果港,結果婚禮上,老公的妹妹穿的比我還像新娘糊昙。我一直安慰自己辛掠,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布释牺。 她就那樣靜靜地躺著萝衩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪船侧。 梳的紋絲不亂的頭發(fā)上欠气,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音镜撩,去河邊找鬼预柒。 笑死队塘,一個胖子當著我的面吹牛,可吹牛的內容都是我干的宜鸯。 我是一名探鬼主播憔古,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淋袖!你這毒婦竟也來了鸿市?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤即碗,失蹤者是張志新(化名)和其女友劉穎焰情,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剥懒,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡内舟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了初橘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片验游。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖保檐,靈堂內的尸體忽然破棺而出耕蝉,到底是詐尸還是另有隱情,我是刑警寧澤夜只,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布垒在,位于F島的核電站,受9級特大地震影響盐肃,放射性物質發(fā)生泄漏爪膊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一砸王、第九天 我趴在偏房一處隱蔽的房頂上張望推盛。 院中可真熱鬧,春花似錦谦铃、人聲如沸耘成。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘪菌。三九已至,卻和暖如春嘹朗,著一層夾襖步出監(jiān)牢的瞬間师妙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工屹培, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留默穴,地道東北人怔檩。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像蓄诽,于是被迫代替她去往敵國和親薛训。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容