破解世界性技術難題! GTS讓分散式事務簡單高效
近日,2017雲棲大會·深圳峰會如期舉行,多項阿裡雲新產品對外發佈。特別在3月29日下午企業級互聯網架構分會場,來自阿裡中介軟體(Aliware)的技術專家及合作夥伴,為現場參會嘉賓帶來最新的傳統IT架構到企業級互聯網架構跨越式升級、實現互聯網轉型的產品及解決方案。其中高級技術專家姜宇在分享中帶來的Aliware新產品—全域事務服務(Global Transaction Service ,簡稱GTS),在分散式交易處理上帶來的高性能和技術創新令到場參會的各路技術專家眼前一亮。
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作為阿裡內部為解決分散式資料強一致性問題而研發的分散式事務中介軟體,徹底解決了分散式交易資料一致性的問題,簡單易用,先後在淘寶,菜鳥,淘票票和村淘等多個業務的核心系統上得到部署和驗證。
順應雲時代潮流,GTS應運而生
從2016年年中開始,在阿裡內部一直接受錘煉的分散式事務中介軟體TXC在2.0版本後,隨著阿裡中介軟體上雲熱潮,開始通過專有雲輸出,並得到了市場極大認可,適用場景得到進一步拓展,全面涵蓋電商、物流、金融、零售、政企、遊戲、文娛等領域。2017年2月,TXC 2.0通過阿裡雲對外公測,外部改名為全域事務服務(Global Transaction Service,簡稱GTS)。
GTS總體架構圖
在整體架構方面,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的高效可靠。
GTS典型性能測試場景資料
性能優異,業務場景廣泛
作為新一代企業級分散式事務服務產品,全域事務服務GTS兼顧了事務一致性,高性能與易用性。在滿足事務ACID的前提下,普通配置的單伺服器就可以達到15000TPS以上的超強性能(兩個小時內完成1億多筆業務),3台8核16G記憶體虛機組成的伺服器集群可以支撐1萬TPS以上的分散式事務,與同類產品相比,性能優勢明顯。另外簡單易用對業務無侵入,為廣大企業大幅降低開發成本,業務場景非常廣泛:
1、跨多分庫的分散式資料庫事務場景:關係型數據庫普遍支援事務,能夠滿足事務內的SQL要麼全部成功、要麼全部失敗。但客戶從單機資料庫往分散式資料庫遷移的情況下,原有的一個事務往往會被拆分為多個分庫上的事務。由於網路的不可靠性,容易出現部分分庫上成功,部分分庫上失敗的情況。GTS結合DRDS可徹底解決了這一問題。
2、跨多資料庫的事務場景:複雜的業務系統經常會使用多個資料庫,甚至多種類型的資料庫,比如企業中Oracle,MySQL和其他關係型數據庫並存的情況時有發生。業務同時操作多個資料庫的情況下,一旦發生先提交的事務成功、後提交的事務失敗,就很難解決。GTS支援各種常見關係型數據庫,並提供多資料庫間的事務保證。
3、跨資料庫系統、消息系統的事務場景:消息系統被廣泛地用於系統間解耦,一般先執行一段業務邏輯,執行成功會向消息系統發送一條消息,用於通知或觸發下游業務。這個場景下,如果業務邏輯執行成功、消息發送失敗,則業務不完整;如果先發送消息,但執行業務邏輯失敗,同樣存在問題。GTS提供了針對消息系統以及常見關係型數據庫的操作入口,保證資料庫操作和發送消息要麼同時成功、要麼同時失敗。
4、跨服務的事務場景:隨著業務複雜度提升,大多企業會對業務進行服務化改造。可能存在服務一操作MySQL和DRDS,服務二操作Oracle,要求兩個服務操作要麼同時成功、要麼同時失敗,否則會造成業務資料的不一致。GTS可以很方便地進行跨多個服務的分散式事務。
依託阿裡中介軟體(Aliware),打造世界一流企業級互聯網架構平臺
據GTS專案負責人姜宇介紹,“GTS作為一款高性能、高可靠、接入簡單的分散式事務中介軟體產品,可與 DRDS、RDS、Oracle、MySQL、PostgreSQL、H2等資料來源,EDAS、Dubbo及多種私有RPC框架,MQ訊息佇列等中介軟體產品配合使用,可輕鬆實現分散式資料庫事務、多庫事務、消息事務、服務鏈路級事務及各種組合。策略豐富,易用性和性能兼顧。將真正完善阿裡雲中介軟體產品線。”GTS(TXC)的研發依託于阿裡中介軟體(Aliware)團隊,中介軟體技術部是阿裡巴巴集團生態系統的技術基石,為集團各大業務群提供可靠、高效、易擴展的技術基礎服務;並在此基礎上打造世界一流的中介軟體產品、高可用架構基礎設施和企業級互聯網架構平臺,為全球企業和客戶提供服務。
更多Aliware GTS產品服務和技術細節,請訪問官網:https://www.aliyun.com/aliware/txc/