尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
現代IT應用中,服務化SOA作為主流的技術架構被廣泛應用到各種信息系統。原來一個系統被分拆成若干個服務的集合,產生了跨服務調用的分布式事務問題。隨著Dubbo、SpringCloud等微服務框架的流行,服務被進一步細分,跨服務調用以及服務的嵌套調用越來越廣泛。分布式事務已經成為現代分布式系統中必須面對並解決的難題。為此,今天給大家介紹下阿里巴巴為解決服務調用中的事務問題推出的解決方案GTS。
1 GTS簡介
全局事務服務(GTS,Global Transaction Service)是一款高性能、高可靠、接入簡單的分布式事務中間件,可以為多服務調用或跨數據庫訪問中產生的事務問題提供一站式解決方案。其主要包括客戶端、資源管理器和事務協調器三部分。客戶端主要完成事務的發起與結束。資源管理器,完成分支事務的開啟、提交、回滾等操作。事務協調器是GTS的服務端,主要負責分布式事務的整體推進,事務生命周期的管理。
2 應用場景
GTS可應用在涉及服務調用和跨數據庫操作的多個領域,包括但不限於金融支付、電信、電子商務、快遞物流、廣告行銷、社交、即時通信、手遊、視頻、物聯網、車聯網等,典型的應用場景如下:
2.1 解決微服務化的事務問題
目前微服務理念被廣泛應用到各IT系統的設計中。共享出行作為近幾年現象級應用極大的方便了大家生活。其系統大多基於微服務理念設計,被劃分為眾多服務,如車況服務、優惠券服務、運維服務、車鎖服務、訂單服務、支付服務、用戶服務等。一個簡單的借車業務需要調用車況服務進行檢測,調用訂單服務生成訂單,還需要調用用戶服務、車鎖服務、運維服務。如果車鎖服務調用失敗,用戶無法使用,必須要回滾訂單、車況等服務。可見微服務系統中服務調用非常頻繁,而且需要數據的強一致性。GTS通過與dubbo、EDAS、SpringCloud等主流RPC框架無縫集成,可以很好解決服務調用的一致性問題。
“
2.2 解決調用第三方服務的過程中產生的事務問題
信息系統中很多操作可能需要調用第三方服務才能完成。例如在金融領域,客戶貸款通常包括授信和支用申請兩個流程,由金融公司和銀行的兩套獨立系統共同完成。典型放款業務一般要調用本地的信用核心、風控中心、額度中心3個服務完成資產評估,然後還需要調用銀行系統的身份校驗和支用服務才能完成最終的放款,調用需要嚴格一致。一旦某個服務調用失敗,除回滾本地服務外還需要回滾銀行系統的兩個服務。通過GTS的MT模式可以保證這種場景下第三方服務調用狀態的一致行。
“
2.3 解決跨消息事務問題
有些系統在調用服務的同時, 也會使用消息隊列(MQ)。GTS可以和MQ消息隊列打通,解決跨消息事務的一致性問題。一個典型的場景是在訂票系統中,當用戶進行訂票操作後,訂票系統會調用訂單服務、支付服務,同時向MQ發送訂票結果。GTS可以保證三個操作的一致性性,如果發送消息失敗GTS可以回滾前兩次服務調用。
“
2.4解決跨數據庫的事務問題
大型分布式系統往往涉及的業務非常多,數據可能存儲到多個數據庫中。業務操作可能需要跨多個數據庫甚至是異構數據庫才能完成(如一個業務操作可能需要同時向mysql和drds兩個數據庫中更新數據)。GTS可以很好的解決跨庫的分布式事務,保證數據的強一致行。