談談分布式事務

2022-03-06 22:48:46 字數 2114 閱讀 3217

對於分布式事務,使用者本質訴求是什麼?

分布式事務解決的使用者最本質訴求是什麼?資料一致

大中企業有乙個共同的訴求是資料一致,幾乎覆蓋到各個行業。

比如說零售行業,庫存與出貨的資料需要保持一致,出貨量與庫存資料不匹配,顯而易見會出問題,拿到訂單卻沒貨了,或者有貨卻下不了訂單。

比如說金融行業,轉賬資料搞錯了,a扣款了,b沒加上,馬上該使用者投訴了;a沒扣款,b卻加上了,產生資損。又比如從總賬戶中買了**、**後餘額不對了,等等,都會導致嚴重問題。

以前多數企業的資料規模相對較小,很多操作是單機完成,資料庫本地事務可以搞定,所以資料一致問題不那麼明顯。

隨著網際網路技術快速發展,資料規模增大,分布式系統越來越普及,採用分布式資料庫或者跨多個資料庫的應用在中大規模企業普遍存在,服務化也是廣泛應用,由於網路的不可靠和機器不可靠,資料不一致問題很容易出現。

資料一致問題的現有解決方案

資料一致問題是必須解決的,在很多大企業多年前就已經成為突出問題,他們是怎麼解決的?有這麼幾個典型方案:

* a)xa事務方案

* b)柔性事務

* c)基於訊息的最終一致

* d)人工訂正

方案a,xa協議由tuxedo首先提出的,並交給x/open組織,作為資源管理器(資料庫)與事務管理器的介面標準。oracle、informix、db2和sybase等各大資料庫廠家都提供對xa的支援。xa協議採用兩階段提交方式來管理分布式事務。最主要缺點是效能差,容易成為業務發展瓶頸,所以國內很少使用者採用。

方案b,柔性事務(遵循base理論)是指相對於acid剛性事務而言的,常見的是tcc型事務(try/confirm/cancel)。最主要缺點是業務侵入性太強,需要大量開發工作進行業務改造,給業務公升級、運維都帶來困難。只適合特定領域,不可能作為通用方案對外大面積鋪開。

方案c,常用辦法是通過本地訊息表完成,也有一些通過事務訊息。主要缺點同樣是業務侵入強,需要大量額外開發工作,給業務公升級、運維都帶來困難。還有乙個問題是使用場景受限,有些最終一致無法滿足的情況,需要人工干預。優點是擴充套件性好,可以滿足日益擴大的業務。

方案d,多數中小企業靠人工訂正解決。缺點是運維、支援投入人力大。在業務不是很複雜的情況下能hold住,但業務擴大了就很難應付了。

這些問題很明顯,為什麼沒有產品解決?因為技術層面很難,缺乏關鍵創新,這已經是至少10多年的世界性難題了。這種情況下,gts橫空出世,通過一系列技術創新,希望能徹底解決這些問題。

gts解決資料一致問題

從上面分析可以看出,方案b/c/d是因為a的效能滿足不了業務需求的無奈之舉。

做出乙個同樣滿足事務acid的強一致的通用分布式事務中介軟體,並且效能足夠,簡單易用,才是終極方案,這就是gts的出發點。

事務比較抽象,我舉個例子模擬下gts給使用者帶來了哪些改變。

你每天上班,要經過一條10公里的只有兩條車道的馬路到達公司。這條路很堵,經常需要兩三個小時,上班時間沒***,這是方案a的問題。

選擇一條很繞,長30公里但很少堵車的路,這是選b。上班時間***,但是必須早起,付出足夠的時間和汽油。

選擇一條有點繞,長20公里的山路,路不平,只有suv可以走,這是選c。上面分析了c方案場景受限,對應於交通,是底盤低的小轎車沒法開。好處是,你買了suv走這條山路,時間不算太長(相比b),可以保證按時上班。

發揚艱苦奮鬥,走路上班,這是選d。

顯然,各種方案都不完美。為了完美解決這些問題,阿里巴巴推出了分布式事務產品gts ( )

gts做的是什麼?修了一條擁有4條車道的高架橋,沒有繞路,還是10公里。

不堵車,對事務來說是高效能;不繞路,對事務來說是簡單易用,不用為事務而額外編碼;沒有車輛型別限制,對事務來說是沒有功能限制,提供強一致事務。

在沒有高架橋的時代,高架橋出現對交通來說就是乙個顛覆性創新,很多以前看來無解的問題就迎刃而解了,同樣的,gts通過創新,希望可以改變資料一致性處理的行業現狀。

通過這個模擬,希望可以體會到gts給使用者帶來了哪些價值。

gts已經廣泛應用於阿里內部應用,大量重量級專有雲使用者和公有雲使用者,並得到使用者高度評價 (

本人是阿里巴巴gts產品創始人(姜宇,花名於皋),在分布式事務領域做了9年多,對分布式系統下資料一致性問題有深入理解,有興趣的朋友歡迎交流哈。

談談分布式事務

只要牽涉到分布式系統,無論如何都會碰見分布式事務,當然你可以合理的拆分系統,規劃表和庫的結構,但是這只是減少分布式事務出現的次數,比方說你原來系統中有5處地方會有分布式事務,現在一優化可能只有3處地方有了,但是你要一點也沒有,個人認為不大可能 接下來談談什麼情況下會產生分布式事務?一 同資料庫,不同...

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...

分布式事務 分布式事務的實現

如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...