分布式事務(wù)方案分析
用戶訴求是什么?
分布式事務(wù)解決的用戶最本質(zhì)訴求是什么?數(shù)據(jù)一致。
大中企業(yè)有一個(gè)共同的訴求是數(shù)據(jù)一致,幾乎覆蓋到各個(gè)行業(yè)。
比如說零售行業(yè),庫存與出貨的數(shù)據(jù)需要保持一致,出貨量與庫存數(shù)據(jù)不匹配,顯而易見會(huì)出問題,拿到訂單卻沒貨了,或者有貨卻下不了訂單。
比如說金融行業(yè),轉(zhuǎn)賬數(shù)據(jù)搞錯(cuò)了,A扣款了,B沒加上,馬上該用戶投訴了;A沒扣款,B卻加上了,產(chǎn)生資損。又比如從總賬戶中買了基金、股票后余額不對(duì)了,等等,都會(huì)導(dǎo)致嚴(yán)重問題。
以前多數(shù)企業(yè)的數(shù)據(jù)規(guī)模相對(duì)較小,很多操作是單機(jī)完成,數(shù)據(jù)庫本地事務(wù)可以搞定,所以數(shù)據(jù)一致問題不那么明顯。
隨著互聯(lián)網(wǎng)技術(shù)快速發(fā)展,數(shù)據(jù)規(guī)模增大,分布式系統(tǒng)越來越普及,采用分布式數(shù)據(jù)庫或者跨多個(gè)數(shù)據(jù)庫的應(yīng)用在中大規(guī)模企業(yè)普遍存在,服務(wù)化也是廣泛應(yīng)用,由于網(wǎng)絡(luò)的不可靠和機(jī)器不可靠,數(shù)據(jù)不一致問題很容易出現(xiàn)。
數(shù)據(jù)一致問題的現(xiàn)有解決方案
數(shù)據(jù)一致問題是必須解決的,在很多大企業(yè)多年前就已經(jīng)成為突出問題,他們是怎么解決的?有這么幾個(gè)典型方案:
- a)XA事務(wù)方案
- b)柔性事務(wù)
- c)基于消息的最終一致
- d)人工訂正
方案a,XA協(xié)議由Tuxedo首先提出的,并交給X/Open組織,作為資源管理器(數(shù)據(jù)庫)與事務(wù)管理器的接口標(biāo)準(zhǔn)。Oracle、Informix、DB2和Sybase等各大數(shù)據(jù)庫廠家都提供對(duì)XA的支持。XA協(xié)議采用兩階段提交方式來管理分布式事務(wù)。最主要缺點(diǎn)是性能差,容易成為業(yè)務(wù)發(fā)展瓶頸,所以國內(nèi)很少用戶采用。
方案b,柔性事務(wù)(遵循BASE理論)是指相對(duì)于ACID剛性事務(wù)而言的,常見的是TCC型事務(wù)(Try/Confirm/Cancel)。最主要缺點(diǎn)是業(yè)務(wù)侵入性太強(qiáng),需要大量開發(fā)工作進(jìn)行業(yè)務(wù)改造,給業(yè)務(wù)升級(jí)、運(yùn)維都帶來困難。只適合特定領(lǐng)域,不可能作為通用方案對(duì)外大面積鋪開。
方案c,常用辦法是通過本地消息表完成,也有一些通過事務(wù)消息。主要缺點(diǎn)同樣是業(yè)務(wù)侵入強(qiáng),需要大量額外開發(fā)工作,給業(yè)務(wù)升級(jí)、運(yùn)維都帶來困難。還有一個(gè)問題是使用場(chǎng)景受限,有些最終一致無法滿足的情況,需要人工干預(yù)。優(yōu)點(diǎn)是擴(kuò)展性好,可以滿足日益擴(kuò)大的業(yè)務(wù)。
方案d,多數(shù)中小企業(yè)靠人工訂正解決。缺點(diǎn)是運(yùn)維、支持投入人力大。在業(yè)務(wù)不是很復(fù)雜的情況下能hold住,但業(yè)務(wù)擴(kuò)大了就很難應(yīng)付了。
這些問題很明顯,為什么沒有產(chǎn)品解決?因?yàn)榧夹g(shù)層面很難,缺乏關(guān)鍵創(chuàng)新,這已經(jīng)是至少10多年的世界性難題了。這種情況下,GTS橫空出世,通過一系列技術(shù)創(chuàng)新,希望能徹底解決這些問題。
阿里中間件GTS解決數(shù)據(jù)一致問題
從上面分析可以看出,方案b/c/d是因?yàn)閍的性能滿足不了業(yè)務(wù)需求的無奈之舉。
做出一個(gè)同樣滿足事務(wù)ACID的強(qiáng)一致的通用分布式事務(wù)中間件,并且性能足夠,簡單易用,才是終極方案,這就是GTS的出發(fā)點(diǎn)。
事務(wù)比較抽象,我舉個(gè)例子類比下GTS給用戶帶來了哪些改變。
你每天上班,要經(jīng)過一條10公里的只有兩條車道的馬路到達(dá)公司。這條路很堵,經(jīng)常需要兩三個(gè)小時(shí),上班時(shí)間沒有保證,這是方案a的問題。
選擇一條很繞,長30公里但很少堵車的路,這是選b。上班時(shí)間有保證,但是必須早起,付出足夠的時(shí)間和汽油。
選擇一條有點(diǎn)繞,長20公里的山路,路不平,只有suv可以走,這是選c。上面分析了c方案場(chǎng)景受限,對(duì)應(yīng)于交通,是底盤低的小轎車沒法開。好處是,你買了suv走這條山路,時(shí)間不算太長(相比b),可以保證按時(shí)上班。
發(fā)揚(yáng)艱苦奮斗,走路上班,這是選d。
GTS做的是什么?修了一條擁有4條車道的高架橋,沒有繞路,還是10公里。
不堵車,對(duì)事務(wù)來說是高性能;不繞路,對(duì)事務(wù)來說是簡單易用,不用為事務(wù)而額外編碼;沒有車輛類型限制,對(duì)事務(wù)來說是沒有功能限制,提供強(qiáng)一致事務(wù)。
在沒有高架橋的時(shí)代,高架橋出現(xiàn)對(duì)交通來說就是一個(gè)顛覆性創(chuàng)新,很多以前看來無解的問題就迎刃而解了,同樣的,GTS通過創(chuàng)新,希望可以改變數(shù)據(jù)一致性處理的行業(yè)現(xiàn)狀。
通過這個(gè)類比,希望可以體會(huì)到GTS給用戶帶來了哪些價(jià)值。GTS官網(wǎng):https://www.aliyun.com/aliware/txc
更多信息請(qǐng)關(guān)注 GTS研發(fā)團(tuán)隊(duì)微博:https://weibo.com/jiangyu666