Seata(一)

一、數(shù)據(jù)庫(kù)事務(wù)

1.1)什么是ACID

Atomicity 原子性

對(duì)于一個(gè)操作信卡,要么全部提交,要么全部回滾丢习。

Consistency 一致性

數(shù)據(jù)庫(kù)中的數(shù)據(jù)符合現(xiàn)實(shí)世界中的約束咐低,則這些數(shù)據(jù)符合一致性见擦。比如性別約束男 & 女,人民幣數(shù)值不能為負(fù)损痰,出生地址不能為null酒来,轉(zhuǎn)賬的總金額不能變等等役首。

Isolation 隔離性

對(duì)于同一個(gè)數(shù)據(jù)的操作,各個(gè)事務(wù)對(duì)于該數(shù)據(jù)狀態(tài)的轉(zhuǎn)換互相不可見(jiàn)

Durability 持久性

現(xiàn)實(shí)狀態(tài)映射到數(shù)據(jù)庫(kù)中爹袁,意味著對(duì)數(shù)據(jù)所有的改動(dòng)都持久化到磁盤上

1.2)事務(wù)的狀態(tài)都有哪些

1.3)事務(wù)并發(fā)執(zhí)行時(shí)數(shù)據(jù)一致性問(wèn)題有哪些

臟寫對(duì)于多個(gè)事務(wù)操作同一數(shù)據(jù)時(shí)沒(méi)有任何隔離性

臟讀:一個(gè)事務(wù)(A)讀取到了另一個(gè)\color{red}未\color{red}提\color{red}交事務(wù)(B)修改過(guò)的數(shù)據(jù)

不可重復(fù)讀:另一個(gè)事務(wù)(B)修改一個(gè)\color{red}未\color{red}提\color{red}交事務(wù)(A)讀取過(guò)的數(shù)據(jù)

針對(duì)某條件讀前讀后不一致

幻讀:一個(gè)事務(wù)(A)根據(jù)\color{red}某\color{red}些\color{red}搜\color{red}索\color{red}條\color{red}件(select ... where vip='是')查詢了一些記錄档址。A未提交時(shí),另一個(gè)事務(wù)(B)寫入了(insert绎秒、update尼摹、delete都行蠢涝,以insert為例)一些符合上述搜索條件的記錄(insert into ... values(3,700,'是') )

針對(duì)某條件范圍讀前讀后不一致

3)SQL事務(wù)隔離級(jí)別

隔離級(jí)別從上到下依次安全度遞增和二,效率遞減

二惯吕、分布式場(chǎng)景下事務(wù)及數(shù)據(jù)一致性問(wèn)題

微服務(wù)數(shù)據(jù)一致性問(wèn)題不可避免

2.1)水平分庫(kù)

數(shù)據(jù)分流废登,分表也是一樣的邏輯

2.2)垂直分庫(kù)

關(guān)系型數(shù)據(jù)庫(kù)一張表數(shù)據(jù)量上兩三千萬(wàn)就會(huì)承壓過(guò)大钳宪,采取在一個(gè)庫(kù)中水平分表將數(shù)據(jù)分?jǐn)偪蓽p小壓力扳炬;

水平分庫(kù)是為了防止高并發(fā)情況下可能產(chǎn)生超出數(shù)據(jù)庫(kù)連接的系統(tǒng)假死情況提供數(shù)據(jù)庫(kù)的主從保證高可用性恨樟;

垂直分庫(kù)是為了方便業(yè)務(wù)的解耦疚俱,也可以防止磁盤過(guò)大占用隨機(jī)讀影響的效率

一般情況下除了生意特別火爆呆奕,庫(kù)存和支付不會(huì)很忙梁钾,只有訂單會(huì)多一些則只需要針對(duì)訂單表進(jìn)行分表零酪,這種情況下單體服務(wù)完全夠用?

三四苇、分布式事務(wù)解決方案

3.1)剛性事務(wù)——XA

3.2)剛性事務(wù)——2PC

單點(diǎn)問(wèn)題在于協(xié)調(diào)者掛掉參與者接收不到命令瓣赂;性能問(wèn)題在于每個(gè)參與者的效率不一樣影響整體性能;一致性風(fēng)險(xiǎn)在于協(xié)調(diào)者通知參與者執(zhí)行第二階段時(shí)某一個(gè)參與者由于網(wǎng)絡(luò)或其他問(wèn)題沒(méi)接收到命令而失去整體事務(wù)執(zhí)行不一致

3.3)剛性事務(wù)——3PC

詢問(wèn)階段解決了性能問(wèn)題穆碎,超時(shí)可以自動(dòng)提交解決了單點(diǎn)問(wèn)題,詢問(wèn)階段主要查詢各個(gè)參與者數(shù)據(jù)庫(kù)是否健康

3.4)柔性事務(wù)——可靠事務(wù)隊(duì)列

比如當(dāng)每隔一分鐘重試五次全部失敗方面,則有一個(gè)后臺(tái)線程掃描行為表發(fā)現(xiàn)狀態(tài)不是已完成則將總表的事務(wù)ID11111狀態(tài)改為0表示應(yīng)該整體行為失敗

3.5)柔性事務(wù)——TCC

業(yè)務(wù)侵入式不強(qiáng)的框架在于不用框架時(shí)系統(tǒng)只需要去除一些注解仍然能運(yùn)行——TCC和2PC的區(qū)別在于cancel階段使我們自己實(shí)現(xiàn)恭金,可在其中繼續(xù)重試提交

3.6)柔性事務(wù)——SAGA

補(bǔ)償區(qū)別于TCC的凍結(jié)在于沒(méi)有中間狀態(tài)横腿,比如支付直接執(zhí)行完扣錢之后其它事務(wù)失敗需要整體回滾時(shí)由于已經(jīng)執(zhí)行扣錢所以就補(bǔ)償再給賬戶充錢耿焊,而不是像凍結(jié)一樣取消扣錢

3.7)柔性事務(wù)——基于數(shù)據(jù)補(bǔ)償

需要回滾的時(shí)候先通過(guò)后鏡像檢測(cè)數(shù)據(jù)庫(kù)中是否符合生成逆向SQL條件,不符合拋異常器腋,符合再根據(jù)前鏡像生成逆向SQL進(jìn)行數(shù)據(jù)補(bǔ)償——簡(jiǎn)單來(lái)說(shuō)就是其它服務(wù)進(jìn)行了不同于后鏡像的臟寫

剛性事務(wù)和柔性事務(wù)對(duì)比

四纫塌、Seata概述

4.1)什么是Seata

4.2)Seata的特色功能

基于數(shù)據(jù)補(bǔ)償?shù)腁T模式為主措左,但在數(shù)據(jù)庫(kù)是別人系統(tǒng)無(wú)法基于SQL回滾的情況下使用TCC模式輔助完成分布式事務(wù)

4.3)Seata中的角色

Server和Client使用Netty和dubbo交互媳荒,主要是Netty

4.4)Seata處理分布式事務(wù)的主要流程

TM向TC申請(qǐng)開(kāi)啟全局事務(wù)钳枕,TC向TM返回全局事務(wù)ID赏壹,RM開(kāi)啟后向TC進(jìn)行注冊(cè)分支蝌借,TC記錄不同的Branch_ID,RM完成Commit后向TC發(fā)送狀態(tài)自晰,TC檢測(cè)所有Branch_ID狀態(tài)成功后向TM發(fā)送二階段提交命令(也就是\color{red}刪\color{red}除\color{red}前\color{red}后\color{red}鏡\color{red}像)稍坯,狀態(tài)失敗則回滾

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞧哟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咧党,更是在濱河造成了極大的恐慌陨亡,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辨液,死亡現(xiàn)場(chǎng)離奇詭異箱残,居然都是意外死亡被辑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門谈山,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宏怔,“玉大人臊诊,你說(shuō)我怎么就攤上這事〈セ” “怎么了玷或?”我有些...
    開(kāi)封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵歼狼,是天一觀的道長(zhǎng)位他。 經(jīng)常有香客問(wèn)我,道長(zhǎng)泼橘,這世上最難降的妖魔是什么迈勋? 我笑而不...
    開(kāi)封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任醋粟,我火速辦了婚禮靡菇,結(jié)果婚禮上重归,老公的妹妹穿的比我還像新娘。我一直安慰自己厦凤,他們只是感情好鼻吮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著较鼓,像睡著了一般椎木。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上博烂,一...
    開(kāi)封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音禽篱,去河邊找鬼畜伐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛躺率,可吹牛的內(nèi)容都是我干的玛界。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼悼吱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼慎框!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起后添,我...
    開(kāi)封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鲤脏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后吕朵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體猎醇,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年努溃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硫嘶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梧税,死狀恐怖沦疾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情第队,我是刑警寧澤哮塞,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站凳谦,受9級(jí)特大地震影響忆畅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尸执,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一家凯、第九天 我趴在偏房一處隱蔽的房頂上張望缓醋。 院中可真熱鬧,春花似錦绊诲、人聲如沸送粱。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抗俄。三九已至,卻和暖如春世舰,著一層夾襖步出監(jiān)牢的瞬間橄镜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工冯乘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洽胶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓裆馒,卻偏偏與公主長(zhǎng)得像姊氓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喷好,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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