閱讀985 返回首頁    go 阿裏雲 go 技術社區[雲棲]


破解世界性技術難題! GTS讓分布式事務簡單高效

近日,2017雲棲大會·深圳峰會如期舉行,多項阿裏雲新產品對外發布。在企業級互聯網架構分會場,來自阿裏中間件(Aliware)的技術專家及合作夥伴,為現場參會嘉賓帶來最新的傳統IT架構到企業級互聯網架構跨越式升級、實現互聯網轉型的產品及解決方案。其中高級技術專家薑宇在分享中帶來的Aliware新產品—全局事務服務(Global Transaction Service ,簡稱GTS),在分布式事務處理上帶來的高性能和技術創新令到場參會的各路技術專家眼前一亮。

image
Aliware新成員—全局事務服務GTS技術分享現場

OLTP領域中很多業務場景都會麵臨事務一致性的需求,傳統業務係統常以單體應用形式存在,隻需借助特有數據訪問技術和框架,結合關係型數據庫自帶的事務管理機製來實現事務一致性的要求。而目前大型互聯網應用和平台往往是由一係列分布式係統構建而成,平台和技術架構也是流派紛呈。

尤其是微服務架構盛行的今天,一個看似簡單的功能,內部可能需要調用多個“服務”並操作多個數據庫或分片來實現,單一技術手段和解決方案已無法滿足這些複雜應用場景。因此,分布式係統架構中分布式事務是一個繞不過去的挑戰。什麼是分布式事務?簡單的說,就是一次大操作由不同小操作組成,這些小操作分布在不同服務器上,分布式事務需要保證這些小操作要麼全部成功,要麼全部失敗。

本質上來說,分布式事務就是為了保證不同數據庫或消息係統的數據一致性。

分布式係統的事務一致性本身是一個技術難題,沒有一種簡單完美的方案能夠應對所有場景,很難兼顧事務一致性,高性能與易用性。三者缺一,則適用場景大大受限,實用價值不高。

首先是一致性:要求在各種異常情況下保證數據是強一致的。目前最常見的一致性解決方案是最終一致性方案,通常是結合消息中間件實現,在互聯網企業中廣泛使用。最終一致性實現方案比較複雜,開發、運維成本高,並且與強一致相比,業務上是受很多限製的。

其次是高性能:目前基於XA協議的兩階段提交是最常見的分布式事務解決方案,但XA類產品的典型不足是性能低下,這對於互聯網大並發需求下的多數企業是無法接受的。國外具有幾十年曆史和技術沉澱的基於XA模型的商用分布式事務產品,在相同軟硬件條件下,開啟分布式事務後吞吐經常有數量級的下降。

第三是易用性:為了滿足一致性和高性能要求,出現了一些特定場景下的分布式事務方案,但通常會限製用戶用法,對業務侵入性強,無法做到簡單易用,帶來更多開發成本。

早期的阿裏巴巴集團隨著業務高速發展,內部不斷湧現各種典型的分布式事務需求,比如阿裏內部廣泛使用的TDDL分庫分表所帶來的分庫間數據不一致問題,HSF服務化後所帶來的服務鏈路上數據不一致問題等。在這個過程中,各業務技術團隊利用現有中間件技術手段實現分布式事務處理,但這些手段都較為複雜,工作量大,對應用侵入嚴重,有些適用場景還有限製。

2014年5月開始,阿裏中間件(Aliware)內部命名為TXC的分布式事務中間件開始研發,同年10月1.0版本發布,分布式事務功能已經具備,但性能還有局限,隻適合於吞吐量較小的場景;2015年12月,TXC 2.0版本發布,相比1.0版本性能提升10倍以上,在阿裏內部多條業務線得到部署。

通過部署TXC,應用隻需極少的代碼改造和配置,即可享受分布式事務帶來的便利。TXC作為阿裏內部為解決分布式數據強一致性問題而研發的分布式事務中間件,徹底解決了分布式事務數據一致性的問題,簡單易用,先後在淘寶,菜鳥,淘票票和村淘等多個業務的核心係統上得到部署和驗證。

image


從2016年年中開始,在阿裏內部一直接受錘煉的分布式事務中間件TXC在2.0版本後,隨著阿裏中間件上雲熱潮,開始通過專有雲輸出,並得到了市場極大認可,適用場景得到進一步拓展,全麵涵蓋電商、物流、金融、零售、政企、遊戲、文娛等領域。2017年2月,TXC 2.0通過阿裏雲對外公測,外部改名為全局事務服務(Global Transaction Service,簡稱GTS)。

image


在整體架構方麵,GTS由三個組件組成:客戶端(GTS-Client),資源管理器(RM),事務協調器(GTS-Server)。客戶端與事務協調器間,資源管理器與事務協調器間都是通過GTS分布式事務協議進行通信。客戶端負責界定事務邊界,開啟/提交/回滾全局事務,資源管理器負責管理資源,支持的資源包括:DRDS,Oracle,MySQL,RDS,PostgreSQL,H2,MQ,後續計劃根據實際業務需求支持更多類型資源。事務協調器,也就是GTS服務器,是分布式事務處理的大腦,負責協調整個事務過程。GTS事務通過RPC框架和消息中間件進行事務傳遞,把整個業務調用鏈路或者消息鏈路串成一個分布式事務,極大簡化應用開發。

在高可用方麵,GTS支持同城容災與兩地三中心容災,可保證各種異常情況下的數據一致。在易用性方麵,GTS對業務無侵入,真正做到業務與事務分離,開發者可以集中精力於業務本身。在技術創新方麵,GTS也走在了行業前沿。項目負責人阿裏高級技術專家薑宇(花名於皋)擁有13項分布式事務的核心技術專利,研發團隊的技術專家張鬆樹也有3篇專利。通過大量的專利技術,精妙的算法,與精巧的分布式事務私有協議,GTS取得了超強的性能。

另外,在部分嚴苛的行業應用場景,比如金融用戶的資管項目分布式事務場景下,GTS也經曆了嚴格的測試,按照用戶要求順利完成功能性、穩定性和性能測試。下圖是一個典型性能測試場景數據,從實測數據可以看出,開啟GTS(TXC)分布式事務後性能下降不明顯。目前GTS已經在資金業務上有實際應用,線上大量真實數據驗證了GTS的高效可靠。

image


作為新一代企業級分布式事務服務產品,全局事務服務GTS兼顧了事務一致性,高性能與易用性。在滿足事務ACID的前提下,普通配置的單服務器就可以達到15000TPS以上的超強性能(兩個小時內完成1億多筆業務),3台8核16G內存虛機組成的服務器集群可以支撐1萬TPS以上的分布式事務,與同類產品相比,性能優勢明顯。另外簡單易用對業務無侵入,為廣大企業大幅降低開發成本,業務場景非常廣泛:

1、跨多分庫的分布式數據庫事務場景:關係型數據庫普遍支持事務,能夠滿足事務內的SQL要麼全部成功、要麼全部失敗。但客戶從單機數據庫往分布式數據庫遷移的情況下,原有的一個事務往往會被拆分為多個分庫上的事務。由於網絡的不可靠性,容易出現部分分庫上成功,部分分庫上失敗的情況。GTS結合DRDS可徹底解決了這一問題。

2、跨多數據庫的事務場景:複雜的業務係統經常會使用多個數據庫,甚至多種類型的數據庫,比如企業中Oracle,MySQL和其他關係型數據庫並存的情況時有發生。業務同時操作多個數據庫的情況下,一旦發生先提交的事務成功、後提交的事務失敗,就很難解決。GTS支持各種常見關係型數據庫,並提供多數據庫間的事務保證。

3、跨數據庫係統、消息係統的事務場景:消息係統被廣泛地用於係統間解耦,一般先執行一段業務邏輯,執行成功會向消息係統發送一條消息,用於通知或觸發下遊業務。這個場景下,如果業務邏輯執行成功、消息發送失敗,則業務不完整;如果先發送消息,但執行業務邏輯失敗,同樣存在問題。GTS提供了針對消息係統以及常見關係型數據庫的操作入口,保證數據庫操作和發送消息要麼同時成功、要麼同時失敗。

4、跨服務的事務場景:隨著業務複雜度提升,大多企業會對業務進行服務化改造。可能存在服務一操作MySQL和DRDS,服務二操作Oracle,要求兩個服務操作要麼同時成功、要麼同時失敗,否則會造成業務數據的不一致。GTS可以很方便地進行跨多個服務的分布式事務。

據GTS項目負責人薑宇介紹,“GTS作為一款高性能、高可靠、接入簡單的分布式事務中間件產品,可與 DRDS、RDS、Oracle、MySQL、PostgreSQL、H2等數據源,EDAS、Dubbo及多種私有RPC框架,MQ消息隊列等中間件產品配合使用,可輕鬆實現分布式數據庫事務、多庫事務、消息事務、服務鏈路級事務及各種組合。策略豐富,易用性和性能兼顧,將真正完善阿裏雲中間件產品線。”

GTS(TXC)的研發依托於阿裏中間件(Aliware)團隊,中間件技術部是阿裏巴巴集團生態係統的技術基石,為集團各大業務群提供可靠、高效、易擴展的技術基礎服務;並在此基礎上打造世界一流的中間件產品、高可用架構基礎設施和企業級互聯網架構平台,為全球企業和客戶提供服務。

原文鏈接

最後更新:2017-06-19 19:32:50

  上一篇:go  Time Traveler - 朝花夕拾,拾了又拾
  下一篇:go  Redis配置文件功能說明詳解