本文介紹一些 GTS 的常見問題,幫助您更好地了解 GTS。

如何開通 GTS 服務(wù),都需要準備什么?

  1. 申請一個阿里云賬戶。
  2. 在阿里云的產(chǎn)品與服務(wù)中找到 GTS 產(chǎn)品,并單擊進入 GTS 控制臺。
  3. 如果您希望使用 @TxcTransaction 注解方式接入 GTS,您需要在 GTS 控制臺中申請一個 GTS 分組,將這個分組 ID 按照使用要求放到代碼中即可。

GTS 的 TPS 數(shù)是如何計算的?

一次全局事務(wù)會話一般會包含多個分支事務(wù)。實例規(guī)格中的 TPS,指的是每秒全局事務(wù)會話次數(shù)加上分支事務(wù)次數(shù)的峰值。

GTS 中的 TPS 計量的是 GTS 每秒處理的服務(wù)請求個數(shù)。

服務(wù)請求 包括兩類:

  • 全局事務(wù)開啟請求:一個全局事務(wù)一個請求。
  • 分支事務(wù)注冊請求:全局事務(wù)是由若干分支事務(wù)組成的。全局事務(wù)鏈路中的每一個本地事務(wù)都需要注冊為全局事務(wù)的一個分支。

所以,除了全局事務(wù)的個數(shù),全局事務(wù)中涉及的本地事務(wù)個數(shù),是 GTS 服務(wù)規(guī)格需求的重要因素。全局事務(wù)中包含的本地事務(wù)越多,對 GTS 服務(wù)規(guī)格要求可能越高。

下面通過一個示例幫助您了解如何計算 TPS。

一個全局事務(wù),涉及 3 個微服務(wù)(A/B/C)調(diào)用。如果每個微服務(wù)只做一個本地事務(wù)操作,則這個全局事務(wù)對 GTS 的服務(wù)請求就是:

1(全局事務(wù)開啟)+ 1(A 的分支事務(wù)注冊)+ 1(B 的分支事務(wù)注冊)+ 1(C 的分支事務(wù)注冊)= 4

如果,上述微服務(wù)中的 A 工作在 autocommit=true 的模式下,每一個 DML 操作都是一個本地事務(wù),都要向 GTS 注冊分支。例如 A 服務(wù)的 DML 操作有 5 個,那么 A 服務(wù)向 GTS 注冊分支的請求就增加到 5 個,此時,這個全局事務(wù)對 GTS 的服務(wù)請求就是:

1(全局事務(wù)開啟)+ 5(A 的分支事務(wù)注冊)+ 1(B 的分支事務(wù)注冊)+ 1(C 的分支事務(wù)注冊)= 8

GTS 部署會不會太重,客戶端都依賴什么?

如果您使用的是注解方式的 GTS,就需要部署 GTS 的 SDK,僅需要在 pom.xml 中加入相關(guān)幾個依賴就可以,操作簡單。在用戶手冊中,我們已經(jīng)給出了一個典型的 pom.xml 案例。

我開通的多個云產(chǎn)品能否都加入分布式事務(wù)?

能,GTS 具有全鏈路事務(wù)的能力,已經(jīng)開通了 EDAS、MQ、RDS、MySQL 之間的事務(wù)。

GTS 是否支持多機房高可用?

GTS 支持雙機房高可用。當(dāng)一個機房由于斷網(wǎng)、停電等突發(fā)狀況造成了全機房不可用時,GTS 可以自動切換到備用機房繼續(xù)提供服務(wù)。切換時,原機房正在執(zhí)行的事務(wù)會失敗且不能自動保證數(shù)據(jù)一致,但由于這個切換是瞬間執(zhí)行的,那個瞬態(tài)中正在進行的事務(wù)較少,可以提工單申請 GTS 的數(shù)據(jù)不一致處理工具,幫助將僅有的幾個未完成事務(wù)手工處理完畢。