天天看點

螞蟻金服黑科技:SOFA DTX分布式事務,保障億級資金操作一緻性

小螞蟻說:

SOFA ( Scalable Open Financial Architecture )是螞蟻金服自主研發的金融級分布式中間件,包含了建構金融級雲原生架構所需的各個元件,包括微服務研發架構,RPC 架構,服務注冊中心,分布式定時任務,限流/熔斷架構,動态配置推送,分布式鍊路追蹤,Metrics監控度量,分布式高可用消息隊列,分布式事務架構,分布式資料庫代理層等元件,是一套分布式架構的完整的解決方案,也是在金融場景裡錘煉出來的最佳實踐。

支付寶的架構自設計之初到現在,無論系統多麼複雜、交易規模多麼龐大,資料的一緻性是保證資金安全的最核心技術之一,使使用者無論在哪裡,都可放心、流暢地使用支付寶。本文介紹的是目前唯一在超大規模金融級分布式架構上實戰驗證過的分布式事務方案。

前言

資料、消息、微服務是螞蟻金服自主研發的金融級分布式中間件SOFA (Scalable Open Financial Architecture)的三大方向。

螞蟻金服黑科技:SOFA DTX分布式事務,保障億級資金操作一緻性

衆所周知,2007年的時候,整個淘寶網是一個幾百兆位元組的WAR包(Java網站應用程式包),大小功能子產品超過200個,在當時淘寶業務幾乎每隔幾個月就翻倍的高速發展情況下,這樣的應用架構給當時有着500多人的淘寶技術團隊帶來了很大的壓力。螞蟻金服的前身支付寶團隊當時也在淘寶裡,作為淘寶的支付交易子產品。而從2006年底開始,現任螞蟻金服CTO、時任支付寶第一代架構師程立(花名:魯肅)就開始思考對于支付寶架構的改造,以适應整個淘寶的架構發展,這就是螞蟻金服中間件的源起。

從淘寶“大餅一沱”的緊耦合系統中分拆出來的松耦合系統,就隻有分布式計算架構可選,而淘寶又是網際網路應用,于是就需要創造出一個網際網路規模的分布式計算架構,“分布式事務”就是在這個拆分過程中出現的問題。淘寶最初是基于IOE裝置,無需考慮事務一緻性的問題;而在網際網路分布式架構下,由于網絡和PC伺服器等裝置的不可靠,資料不一緻問題很容易出現。而支付寶作為金融交易系統,對事務型的狀态資料一緻性處理以及交易成本的要求更高,這背後就是資金安全:資金處理絕對不出差錯,交易與資料具備強一緻性,在任何故障場景資料不丢不錯。

現任螞蟻金服資料中間件負責人尹博學(花名:育睿)介紹:螞蟻金服分布式事務(Distributed Transaction-eXtended,簡稱 DTX)除了協調資料庫的事務之外,還可以協調服務的一緻性,是在資料庫層之上,從業務層保證不同業務之間的資料一緻性——即複雜系統之間的一緻性,這就是面向未來的核心金融系統。DTX之是以被稱為“黑科技”,是因為自設計之初到現在,無論系統多麼複雜、交易規模多麼龐大,DTX都能在極短的時間内實作資料的一緻性:使用者無論在哪裡,都可放心、流暢地使用支付寶。

螞蟻金服黑科技:SOFA DTX分布式事務,保障億級資金操作一緻性

螞蟻金服資料中間件負責人育睿

黑科技到底有多“黑”?

尹博學是在2017年被吸引加入螞蟻金服,之前他在百度也做着類似的工作,但螞蟻金服在金融級交易這個領域的規模全球獨一無二:螞蟻金服DTX在分布式架構下做到了交易資料的強一緻,是目前唯一在超大規模金融級分布式架構上實戰驗證過的分布式事務方案。

尹博學強調,“事務”是貫穿于所有的金融交易,而金融級交易的資料一緻性是要強保證的。例如,支付寶使用者A給支付寶使用者B轉錢,A減錢、B就必須要同時加上錢,這兩個動作必須一起成功或是一起都不成功,而不能成功一半,也就是說不能A減了錢但B沒有加上,這就會導緻資損。

本質上,金融核心系統中的微服務架構,在進行業務垂直拆分和資料水準拆分後,存在大量的微服務和單中繼資料庫,一個完整金融業務需要調用多個服務和資料庫完成。同時,不僅微服務之間需要解決一緻性問題,不同系統之間的調用也存在事務邊界問題,那麼強一緻的分布式事務服務就将發揮重要作用。

DTX分布式事務服務能滿足複雜場景和高并發的挑戰,充分考慮各類異常情況,且具備足夠的伸縮性、高并發和高可用性,支援跨機房的事務協調能力。“這一整套的協調方式,雖然不是我們獨創,但可以認為螞蟻金服做到了工程的極緻。程立最初設計分布式事務的時候,當時隻有BASE是一種相對比較成熟的理論,但能達到螞蟻金服這個量級的,目前隻此一家。除了性能和吞吐之外,還要衡量考慮擴充性。集中式架構下用DB2或者Oracle架構,可以從1萬個事務提到10萬個事務,但是從10萬提到200萬就幾乎不可能;螞蟻金服可從200萬變到2000萬,甚至更高,而且成本低。”尹博學表示。

DTX黑科技的亮點很多,其中包括:大規模、高擴充、高性能、低成本等。2017年,DTX支援了雙十一峰值25.6萬TPS的支付請求;涉及支付、轉賬、理财、保險等各種業務場景;在支付寶内部,接入DTX的系統超過100+個;每天處理資金以千億記,確定資金的絕對安全;按照雙活可擴充設計,不受地域、機房等限制,無限加PC伺服器等機器就能水準無限擴充;而當出現故障的時候,可很快恢複。整個過程,從始自終,都絕對保證資金安全。

從方法論上保證強一緻

2007開始支付寶核心開始SOA服務化之路,服務化拆分一開始就遇到了跨服務分布式事務問題。傳統的基于資料庫本地事務的解決方案,隻能保障單個服務的一次處理具備原子性(一次事務中所涉及的所有操作全部執行或全部不執行)、隔離性、一緻性與持久性,但無法保障多個分布服務間處理的一緻性。由于業務限制(如紅包不符合使用條件、賬戶餘額不足等)、系統故障(如網絡或系統逾時或中斷、資料庫限制不滿足等),都可能造成服務處理過程在任何一步無法繼續。一旦資料不一緻,就會産生嚴重的業務後果。

傳統分布式事務需保證ACID屬性,強調一緻性,要求強一緻;而BASE則是與之相對立的理論,認為為了可用性(Availability)而犧牲部分一緻性(Consistency)可以顯著的提升系統的可伸縮性,這就是異步操作。螞蟻金服分布式事務産品DTX分别基于兩種理論實作了兩種模式:基于BASE理論的TCC模式和基于ACID理論的FMT模式。

TCC方案其實是兩階段送出的一種改進,将整個業務邏輯的每個分支分成了Try、Confirm、Cancel三個操作,其中Try部分完成業務的準備工作、Confirm部分完成業務的送出、Cancel部分完成事務的復原。這三步僅僅是方法論,具體在每一步的操作實作,則由所涉及的服務自行設計代碼實作。以簡單的A向B轉賬為例,A加錢與B減錢的操作由兩個參與方服務來實作,A和B的兩個Try會同時進行業務系統檢測和資源預留,隻有兩個Try都成功了才會往下進行Confirm操作以送出金額的增減。對于複雜的操作,還會在一個分布式事務裡嵌套多層參與方,隻有每層的Try都成功了,才會完成整個分布式事務的第一階段,中間一旦任何一層失敗都會復原。

為了解決 TCC 模式的易用性問題,螞蟻分布式事務後來又推出了架構托管模式(Framework-managed transactions,簡稱 FMT)。FMT是一種無侵入的分布式事務解決方案,該模式解決了分布式事務的易用性問題,在該模式下,開發者隻需關注一階段操作,架構會自動解析SQL語義,生成二階段送出和復原操作,使分布式事務的接入更便捷,該模式下對業務代碼幾乎無侵入,架構能夠“自動化”地解決分布式架構下的資料一緻性問題。

“DTX本身是有嵌套的,如果調了一個服務,可能它下面還調用了其它服務,也是分布式的,進而形成多級複雜嵌套。DTX是一個方法論級的保證,不管分多少級,隻要層層送出成功了,最終就都能成功送出。”尹博學介紹。DTX本身帶有實時監控,可以監控實時的事務資訊,包括事務數、成功率、平均耗時等,也可以與鍊路監控相結合,根據DTX上報的實時資訊,提供曆史趨勢圖、同比/環比分析、報警等功能。

這樣的DTX就能夠保證每年的雙十一支付峰值。2017年的支付峰值25.6萬筆/秒,相當于200萬個分支事務,也就是這200萬分支事務都要達到最終一緻狀态。在峰值的那幾秒鐘,DTX每秒鐘要維護200萬分支子事務,監控它們的狀态運作,要保證達到最終的一緻性;如果200萬個分支事務裡面發現不一緻,就要快速處理。支付寶雙十一大促的交易筆數和峰值每年都在以驚人速度大幅增長,螞蟻金服所面臨的極端技術挑戰——如何支撐如此大規模交易并保證一緻性問題,在全球範圍來看都不曾有企業實作過。

如今,整個DTX團隊規模并不算大,那又是怎麼實作25.6萬筆/秒的世界級工程呢?

在阿裡集團工作了8年的郎曉東(花名:冰魂)介紹:極緻工程主要是靠異步化來實作,也就是延遲送出。在延遲送出的情況下,資料還是對的,不阻礙交易流程,這就叫異步化。也就是說,在極限峰值的情況下,支付寶能向淘寶的請求發出Confirm,保證雖然現在沒執行但5分鐘之後一定會執行,那麼淘寶就可以放心地告訴使用者購買成功了。因為雙十一大促的最高峰值通常持續時間不長,那麼在洪峰之後,稍有喘息就可以釋放IT資源來處理“蓄洪”那部分操作。“異步隻是在極限情況下采用,雙十一零點一過,又是同步了。異步主要是針對成本,如果多加幾倍的機器,也可以做到同步,但使用者體驗要同成本效益達到最佳平衡,又要保證資金安全,是以就開發出了異步的模式。”郎曉東表示,異步模式讓DTX具有極強的可擴充性,交易量翻多少倍都可以支援。

當然,處理200萬個分支事務/秒的峰值,在搜尋等其它非網際網路金融領域也是有網際網路公司能達到這樣的規模,但是要求的嚴格性不一樣。尹博學介紹,協調參與方多的時候,出錯的機率就高,一般架構的網站對嚴格性的要求并不強,資料不一緻也問題不大,或者資料最終達到一緻性但時間較長也無所謂。但螞蟻金服屬于金融業務,就必須要在高性能、低成本的前提下達到資料的強一緻。

用軟體保證強一緻

“總結螞蟻金服DTX在工程上的卓越性:首先就是能處理支付峰值200萬分支事務;其次是大規模網際網路分布式架構;第三,在資料分布設計上采用了抵近存儲,也就是讓資料靠近業務,再通過批量技術來處理,以減少互動開銷、提升整體吞吐性。最重要的就是DTX是通過軟體實作分布式,保證處理能力的線性與水準擴充,沒有單點、消除單點。”尹博學強調。

所謂用軟體實作分布式,即不依賴底層的硬體,預設底層的硬體随時會挂掉。而對于DTX來說,還是在最高的業務層實作的強一緻,這就意味着甚至預設底層的資料庫也可以随時挂掉。

早年間,淘寶還采用的是Oracle資料庫、MySQL開源資料,後來又開發出了自研資料庫OceanBase。OceanBase(以下簡稱OB)金融級分布式關系型資料庫也是螞蟻金服的“黑科技”之一,讓使用者像使用單機資料庫一樣友善的使用OB,同時提供更高的性能與更好的服務穩定性等。

DTX的強一緻與OB的強一緻,有什麼差別呢?比如有一張使用者表,這張使用者表大到單機存不下,那麼就在OB裡存了兩台機器,例如是M1和M2兩台機器。一個事務既要操作M1上的一行資料,同時又要操作M2上的一行資料,那麼這個事務的一緻性是由OB來保證。但在螞蟻金服架構裡還有一張更大使用者表,會被拆成25張使用者表,這25張使用者表中的每張可能“塞”到一個OB叢集裡,從業務的角度要操作跨兩個OB叢集的事務,這就是DTX來實作。

DTX主要定位于使用者視角的跨庫通路,包括單服務、跨服務協調底層多存儲資源,支援多種底層資料庫,包括MySQL、Oracle、OB等。

對于DTX來說,這些下一層的資料庫,也被視為“硬體”。比如OB會認為磁盤屬于比較慢的硬體系統,而DTX也同樣會極力優化下層資料操作的總體執行性能,因為要考慮到網絡延時,這樣DTX就會把一次操作的多條SQL語句同時發給OB而不是順序發送,進而大幅提高單線程的處理能力。簡單了解,就是DTX作為處于最高業務層的強一緻性方法,統領下面各層資源,在每一層都進行極緻優化,進而達到整個DTX操作的最優化。“我們隻能把軟體當成硬體來優化,一般的公司也不需要優化,因為也摳不到那麼細。”尹博學強調。

“沒有最大,隻有更大”

在談到來螞蟻金服一年多的體驗,尹博學說這就是不斷突破對于“大”的認知。

“在螞蟻金服場景下,會突破對原有理論的認識,升華到另一個境界。在這麼大的交易量下,很簡單的問題會變得很複雜。因為你沒有在這麼‘大’的場景下思考問題,你想當成認為理論就應該是這樣。但當遇到這麼大的交易量,會發現要考慮的很複雜。當你經曆過了這麼大的交易量,再用理論總結這個複雜問題時,發現它又會變得比較簡單。這是一個認識的深化,原來沒想到過這麼大的場景、這麼大交易量下的主要沖突是什麼,發現了以後又變簡單了。”這是尹博學的感覺。

峰值達到每秒25.6萬筆、一天要生成幾十億筆交易的訂單号,這個“天量”已經突破了所有現有技術的極限,那麼解決“天量”規模背後的技術思想就是把同步事情變成提前做或延後做,“抓住這個思想,就會發現又變得簡單了,當然前提是要保證提前做或者延後做都是對的”。

DTX的對外輸出

如今,DTX技術在對外輸出的過程,又變得簡單了起來。張森(花名:紹輝)于2011年加入淘寶,于2015年轉到螞蟻金服,之後一直在中間件SOFA團隊,主要從事資料中間件分布式事務。

張森介紹,螞蟻金服的分布式事務有兩個名字:對内叫XTS,ExtendedTransaction Service可擴充事務服務;對外叫DTX,Distributed Transaction-eXtended分布式事務。2016年張森負責開發了分布式事務背景運維的自動化,2017年分布式事務産品又開發了可托管版本:FMT,該模式主要是解決使用者接入和使用DTX的效率問題,讓使用者可以基本無侵入的方式下解決分布式事務問題。2018年螞蟻金服将推出第三代分布式事務解決方案,也就是XA(eXtended Architecture)模式,全面支援标準XA協定,覆寫面廣,可無縫接入支援XA的資料庫、消息等,幫助傳統業務上雲,并與自研資料庫OceanBase共同打造實時資料一緻性的整體解決方案。

螞蟻金服的技術在2014年開始向生态夥伴和關聯機構輸出(比如網商銀行、天弘基金、Paytm等)。

螞蟻金服黑科技:SOFA DTX分布式事務,保障億級資金操作一緻性

在2017年,南京銀行成為了首個國内銀行機構客戶。在南京銀行網際網路金融平台項目中,螞蟻金融級分布式架構解決方案作為一個整體輸出,而SOFA中間件包括DTX作為其中非常重要的一部分在項目中落地。2014年是螞蟻金融科技元年,為了更好的支援網商銀行的長遠發展,在架構設計初期網商銀行架構組就選型DTX做為分布式事務的解決方案。

總結DTX對外輸出的優勢:第一,相比競争對手而言,DTX覆寫的金融業務種類是最廣的,因為螞蟻金服是全金融場景,包括了支付、理财、銀行、保險等;第二,經過大流量檢驗過,成就了極緻的工程實作;第三,理論發展較快,比如業界其它廠商還停留在TCC模式下,螞蟻金服已經針對雲上的新需求提出FMT、XA等模式,大幅度減少接入的複雜性,并能與螞蟻金服自研的分布式關系型資料庫OceanBase 共同打造實時資料一緻性的整體解決方案;第四,金融級解決方案,通過專業的架構轉型咨詢和實施傳遞服務,使螞蟻金服沉澱多年的工程實踐精粹與行業落地能力能夠結合使用者自身的場景進行打通和賦能,為金融機構架構轉型帶來推動作用,同時也将開放場景定制化能力、大促保障等業務内容,為使用者進行量身定制打造最佳方案,為金融機構數字化轉型保駕護航。

回顧螞蟻金服SOFA DTX最近十年的發展過程,簡單講就是一個不斷求解金融場景超大規模交易量下分布式架構設計的問題及其工程實作,以優異的性能保障業務資料的一緻性,支撐數億級使用者的資金操作。支付寶/螞蟻金服用十四年時間成就了8.7億全球使用者(2018年5月資料,包括支付寶及其全球合資夥伴)、小微企業與金融機構的普惠金融夢想。“為世界帶來更多平等的機會”,一個更加包容、更加可持續、更加綠色的數字金融——這才是螞蟻金服SOFA DTX分布式事務的黑科技之道。

彩蛋

最後,我們也為對 SOFA 中間件感興趣的小夥伴們準備了一個微信交流群,歡迎感興趣的同學掃描下方二維碼聯系加群小助手微信号:Ant-Techfin01,加入我們 SOFA 交流群哦。

— END —

< 粉絲福利時間 >

螞蟻金服黑科技:SOFA DTX分布式事務,保障億級資金操作一緻性

恭喜以下使用者獲得『螞蟻金服科技』粉絲福利:雲栖2050門票一張

xyzlab、空、Limo、覔亖甴、Joe-姜忠坷、純、成崽兒、聖愛、魔方、Monte、山在北國、dk、Mystery、莫那·魯道、德 立、0.0、成東青、欲 亂 人 心 、笑吧、軍軍軍軍 

請獲獎的使用者添加螞蟻小助手微信号:Ant-Techfin01,或掃描下方二維碼

回複“2050門票”然後領取您專屬的兌換碼

購票官網:

https://www.yunqi2050.org/#/index

非常感謝大家對螞蟻金服技術的支援和關注!

如有問題,我們将随時為您答疑解惑

後續小螞蟻會努力給您帶來更多福利哦~

螞蟻金服黑科技:SOFA DTX分布式事務,保障億級資金操作一緻性