GTS爲分佈式事務

產品簡介

GTS是行業內的第一款也是惟一的一款,專一於解決分佈式事務問題的中間件。GTS被定義爲一站式的分佈式事務解決方案,立足點是解決全部的事務問題。應用開發中遇到的事務問題大體分爲四個方面:跨庫事務、服務化事務、消息事務、混合事務。mysql

GTS與其餘解決方案對比

在GTS出現以前,事務問題的解決方案主要有XA方案,補償方案,消息方案等。
·XA方案:優勢爲接口標準化。缺點是阻塞協議,影響系統吞吐和可伸縮性,性能不理想,很難知足互聯網大併發需求,缺少容錯機制。
·補償方案:優勢爲符合業務需求。缺點是實現複雜,各類異常狀況難於處理,要求每一個方法實現一個反向的回滾接口,運維成本高,擴現移植性不理想。
·消息方案:優勢爲實現相對簡單。缺點是要求應用與消息系統緊耦合,增長開發成本,要求業務實現冪等。最終一致性,適用場景受限.sql

XA方案是在資源層面解決分佈式事務的問題。補償方案和消息方案是在應用層面解決事務問題。GTS既不在資源層面也不在應用層面,而是在中間件的層面解決事務問題。這是GTS和其餘三個方案的本質不一樣點。在中間件層面解決有幾個優點:第一,能夠解決跨資源的事務問題,這個是XA方案很難作到的。若是業務系統須要訪問多個資源,好比多個mysql數據庫同時須要訪問MYSQL以及HBASE,這個過程產生的事務問題,GTS能夠解決。第二,能夠解決服務化的事務問題,並且和應用是鬆耦合的,經過使用GTS微服務不須要嵌入解決事務的邏輯,微服務會更加簡單、輕量化。第三,GTS對應用的侵入性很是低,便於應用的擴展和移植。數據庫

GTS優點

GTS的優點總結起來包括四個方面:
·完整解決方案。能夠解決分佈式數據庫、跨數據庫、服務化、消息系統場景下的分佈式事務問題。
·侵入性極低。一行註解便可實現事務接入,也提供 API 接入模式使用門檻低,節省開發和運維成本。
·性能超強。高達傳統分佈式事務 10 倍性能,4c8g集羣可達1.5萬TPS。熱點數據高效處理,無懼數據衝突。
·高可用。支持應用宕機、節點故障等各種異常狀況下都可保持數據嚴格一致,支持同城主備及兩地三中心部署。架構

產品歷史

GTS於2014年正式立項,由阿里高級技術專家於皋牽頭研發,所謂5年磨一劍。到2015年12月份在阿里內部各業務線大規模應用。2017年2月份在阿里雲公測。目前GTS擁有16項核心專利,其中包括4項國際專利。阿里巴巴的用戶如今主要有三類:專有云用戶、公有云用戶、阿里內部用戶。
GTS於5月21日正式商用,首發1月內購買,低至七折。GTS 實例規格分爲 5 TPS(免費版)、20 TPS、100 TPS、200 TPS、500 TPS、2000 TPS 和 5000 TPS。併發

功能架構

整體架構

上圖爲整體架構圖,左側爲GTS服務端,爲三個節點的組成的集羣;右側爲客戶端。app

GTS事務模型

GTS的全局事務是由若干個分支事務構成的。框架

GTS的客戶端包含兩部分:GTS Client和RM。在全局事務開始時,GTS Client會鏈接服務端,服務端會返回xid給Client;Client端將xid傳輸給涉及到全局事務的全部RM;以後,全局事務中的每個RM須要開啓一個分支事務,RM須要向服務端獲取一個分支事務的ID號;以後,RM會彙報狀態給服務端,服務端會知道每個分支事務的執行狀況,而後根據狀況返回給Client端,以完成數據提交工做。運維

GTS與微服務集成架構

GTS與微服務框架集成的架構如上圖所示。業務應用在調用微服務時首先會經過GTS Server發起一個全局事務,獲取到全局事務ID後。業務應用進行服務調用,同時會將全局事務ID,也就是xid傳輸到每一個服務端。業務應用在調用a、b以後若是調用微服務c的時候出現了異常,這個時候業務應用會通知服務端,由服務端驅動微服務的RM進行服務的回滾。這個回滾對服務是透明的。分佈式

容錯機制

GTS容許服務端出現宕機狀況,它能夠保證這種狀況下事務的一致性。若是應用是多機部署的,在應用節點宕機的狀況下GTS仍然能夠保證數據的一致性。
·服務節點宕機微服務

如上圖所示,在回滾的過程當中,S3出現宕機狀況以後,App1鏈接不上S3。此時,S1裏面有S3的備用信息,那麼App1會自動鏈接S1,由S1協助完成App1剛剛沒有完成的回滾的工做。
·應用節點宕機

如上圖所示,App2是客戶端發起了回滾操做,若是回滾的過程當中app1所在的節點宕機,這個時候,GTS服務端會驅動其餘app1的RM完成回滾。

擴展機制

GTS支持橫向擴展。由上圖能夠看出,一個邏輯組能夠映射不一樣的物理組,並且不一樣的邏輯組能夠映射到同一個物理組。

在應用節點很是多的狀況下,能夠經過不一樣的邏輯組去映射不一樣的物理結點,以達到橫向擴展的效果。

AT&MT

GTS提供AT模式(自動模式)和MT(手動)兩種模式。AT模式能夠覆蓋90%以上的場景,也是咱們首先推薦使用的模式。能夠自動回滾、對業務無侵入。MT模式是GTS對TCC的一種支持,主要適用於多個系統集成的場景。兩種模式能夠組合使用。

應用場景

解決跨數據庫的事務問題

數據庫能夠是同構數據庫,異構數據庫,關係數據庫,非關係數據庫等。GTS能夠保證多種狀況下的事務一致性。

解決微服務調用的事務問題

微服務常常會遇到各類事務問題,GTS很是適合解決這樣的問題。好比應用嵌套調用微服務等,GTS均可以保證事務的一致性。

解決多系統集成的事務問題

上圖爲用戶的案例。放款應用調用金融系統中的信用核心的服務去完成系統評估,調用風控中心服務爲客戶作風險評估,調用額度中心生成放款額度,最後調用銀行的支用服務和合法校驗服務,完成放款的操做。

解決混合事務問題

當應用調用多個服務時,GTS也能夠解決這樣的混合事務問題。

實踐操做

AT模式

上圖所示例子爲轉帳操做。

如上圖所示,配置文件裏須要加兩個東西,第一個是GTS提供的一個數據源,第二個是須要加TxcTransactionScaner

MT模式

MT模式是調用第三方接口,或者是在不一樣系統集成的時候可能用到的一種模式。 在不一樣的階段,GTS會調用不一樣的方法,當方法調用失敗的時候GTS會有必定的策略去處理,保證方法的正確實行。

相關文章
相關標籤/搜索