后端存儲實踐二

分布式事務(wù)争涌,如何保證多個系統(tǒng)數(shù)據(jù)的一致性

如果一筆交易涉及到跨多個數(shù)據(jù)庫露该、多個系統(tǒng)的時候,單一的數(shù)據(jù)庫事務(wù)就無法滿足需求了第煮。

那如何解決跨庫數(shù)據(jù)一致性的問題呢解幼?你首先想到肯定是 :分布式事務(wù)

分布式環(huán)境下這事可能就沒這么簡單!

分為分布式環(huán)境,一個交易將會被分在多個不同系統(tǒng)中包警,多個微服務(wù)進程中計算撵摆,在多個數(shù)據(jù)庫中執(zhí)行更新操作。所以并沒有什么分布式事務(wù)或者組件能在分布式環(huán)境下害晦,提供接近單庫事務(wù)一致性的保證特铝。

那么 分布式事務(wù)到底有哪些解決方案呢?

分布式事務(wù)的解決方案有很多壹瘟,比如:2PC鲫剿、3PC、TCC稻轨、Saga 和本地消息表等等灵莲。

2PC:訂單與優(yōu)惠券的數(shù)據(jù)一致性問題

二階段提交,所謂兩階段就是 :準備階段殴俱、提交階段

準備階段:協(xié)調(diào)者分別向訂單系統(tǒng) 優(yōu)惠券系統(tǒng)發(fā)送準備指令政冻,比如開始事務(wù)、插入數(shù)據(jù)最后返回準備成功线欲。

協(xié)調(diào)者根據(jù)收到的 準備成功信息明场,進行下一步的操作。

提交階段就比較簡單了李丰,就是給兩個系統(tǒng)發(fā)送提交指令苦锨。

收到成功后,整個分布式事務(wù)就結(jié)束了趴泌,這是正常的情況舟舒,如果出現(xiàn)了異常了怎么辦?

分兩個階段:

提交階段如果任何一方?jīng)]有正確返回準備成功踱讨,則協(xié)調(diào)者發(fā)送回滾指令魏蔗,準備階段的數(shù)據(jù)進行回滾。

如果進入了提交階段痹筛,這個時候就只能成功莺治。

其實,提交階段因為網(wǎng)絡(luò)服務(wù)等種種原因帚稠,還是有可能失敗谣旁,但是,提交其實是一個快速滋早,輕量級的操作榄审,失敗的概率很小,實際的一致性還是非常好的杆麸。

是不是沒有缺點呢搁进?當然不是:

一是浪感,事務(wù)執(zhí)行的過程會阻塞服務(wù)端的線程和數(shù)據(jù)庫的會話,所以并發(fā)場景性能不會高饼问。

二是影兽,協(xié)調(diào)者一個單點,一旦宕機就會阻塞提交操作莱革。

所以只有在強一致峻堰,并發(fā)量不高的情況下才會考慮使用。

本地消息表:訂單與購物車數(shù)據(jù)的一致性

我們在購物車加入商品后盅视,點擊結(jié)算會進入訂單頁面捐名,這個過程我們做了兩個事情:

一是,清空購物車商品

二是闹击,創(chuàng)建商品訂單

這兩個操作也是要么成功要么失敗镶蹋,但是有一點你 要注意:

購物車商品的清空,不是強一致的呀拇砰,不像 訂單和優(yōu)惠券的的操作梅忌。

晚個幾秒再清空購物車沒什么影響,本地表就非常適合這種分布式最終一致性除破。

思路是這樣的:
當創(chuàng)建訂單的事后牧氮,可以在同一個事務(wù)中記錄一張本地消息表,與訂單在同一個數(shù)據(jù)庫事務(wù)中瑰枫。然后開始一個異步服務(wù)去清空購物車踱葛,如果更新失敗還可以進行重試,直到成功光坝。

使用本地消息表的前提就是尸诽,清空購物車的操作不能依賴其他需要鎖定的資源。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盯另,一起剝皮案震驚了整個濱河市性含,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸳惯,老刑警劉巖商蕴,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芝发,居然都是意外死亡绪商,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門辅鲸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來格郁,“玉大人,你說我怎么就攤上這事±椋” “怎么了锣尉?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雾叭。 經(jīng)常有香客問我悟耘,道長,這世上最難降的妖魔是什么织狐? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮筏勒,結(jié)果婚禮上移迫,老公的妹妹穿的比我還像新娘。我一直安慰自己管行,他們只是感情好厨埋,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捐顷,像睡著了一般荡陷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迅涮,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天废赞,我揣著相機與錄音,去河邊找鬼叮姑。 笑死唉地,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的传透。 我是一名探鬼主播耘沼,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼朱盐!你這毒婦竟也來了群嗤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤兵琳,失蹤者是張志新(化名)和其女友劉穎狂秘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闰围,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡赃绊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羡榴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碧查。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出忠售,到底是詐尸還是另有隱情传惠,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布稻扬,位于F島的核電站卦方,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泰佳。R本人自食惡果不足惜盼砍,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逝她。 院中可真熱鬧浇坐,春花似錦、人聲如沸黔宛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臀晃。三九已至觉渴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間徽惋,已是汗流浹背案淋。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寂曹,地道東北人哎迄。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓憔涉,卻偏偏與公主長得像孵滞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弦牡,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345