View a markdown version of this page

轉返為先前的 KCL 版本 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

轉返為先前的 KCL 版本

本主題說明如何將 KCL 3.5.x+ 消費者應用程式復原至 KCL 1.x。轉返程序取決於您的應用程式目前處於哪個遷移階段。

從階段 1 轉返至 KCL 1.x

如果您的應用程式位於階段 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1),您可以透過重新部署先前的程式碼來轉返至 KCL 1.x。階段 1 與 KCL 1.x 回溯相容,且不會在租用資料表中建立任何遷移特定的項目。不需要遷移工具。若要從階段 1 轉返,請使用 KCL 1.x 版本將程式碼重新部署至所有工作者。

重要

階段 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) 是復原的重大變更。一旦您的應用程式進入階段 2,非租用項目 (WORKER_METRIC_STATS 和 Migration3.0) 會寫入與 KCL 1.x 不回溯相容的租用資料表。這可永久防止直接轉返至 KCL 1.x。我們強烈建議您在階段 1 中長時間封裝應用程式,以便在繼續進行階段 2 之前驗證穩定性。

從階段 2 轉返到階段 1

如果您的應用程式位於階段 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X),您必須使用 GitHub 網站上的 KCL 遷移工具來復原至階段 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1)。這是一個兩步驟的程序:

  1. 在 GitHub 網站上執行 KCL 遷移工具。

  2. 使用階段 1 組態重新部署程式碼 (選用)。

重要

您無法復原兩個層級 (從階段 2 回復到階段 1,然後回復到 KCL 1.x)。KCL 遷移工具只會處理階段 2 到階段 1 的復原。工具不會從租用資料表中刪除非租用項目。這些項目與 KCL 1.x 不回溯相容,這就是為什麼無法從階段 2 直接轉返至 KCL 1.x 的兩個層級。

步驟 1:執行 KCL 移轉工具

當您需要從階段 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) 轉返到階段 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) 時,請執行 KCL 遷移工具。工具會執行下列任務:

  • 它會移除 DynamoDB 中租用資料表上的全域次要索引 (LeaseOwnerToLeaseKeyIndex)。此索引是由 KCL 3.5.x+ 建立,但當您回復到階段 1 時不需要。

  • 此工具可讓所有工作者在 KCL 1.x 相容模式下執行,並開始使用先前 KCL 版本的負載平衡演算法。如果您在 KCL 3.5.x+ 中遇到新負載平衡演算法的問題,這會立即緩解問題。

重要

在遷移、轉返和轉返程序期間,不得刪除租用資料表中的協調器狀態項目 (Migration3.0)。

注意

消費者應用程式中的所有工作者都必須在特定時間使用相同的負載平衡演算法。KCL Migration Tool 可確保 KCL 3.5.x+ 取用者應用程式中的所有工作者都切換到 KCL 1.x 相容模式,以便所有工作者在滾動部署回階段 1 期間執行相同的負載平衡演算法。

您可以在 KCL GitHub 儲存庫的指令碼目錄中,下載 KCL 移轉工具。從任何工作者或任何具有寫入和更新租用資料表所需許可的主機執行指令碼。確保已針對 KCL 取用者應用程式設定適當的 IAM 許可。每個 KCL 應用程式只能執行指令碼一次。使用以下命令執行 KCL Migration Tool:

python3 ./KclMigrationTool.py --region region --mode rollback [--application_name applicationName] [--lease_table_name leaseTableName]

Parameters

--region

將區域取代為您的 AWS 區域。

--application_name

如果您使用租用資料表的預設名稱,則需要此參數。如果您已為租用資料表指定自訂名稱,您可以省略此參數。使用您現有應用程式的名稱取代 applicationName。如果未提供自訂名稱,工具會使用此名稱衍生預設資料表名稱。

--lease_table_name

當您已在 KCL 組態中自訂租用資料表的名稱時,需要此參數。如果您使用的是預設資料表名稱,可以省略此參數。使用您為租用資料表指定的自訂資料表名稱,取代 leaseTableName。

步驟 2:使用階段 1 組態重新部署程式碼 (選用)

執行 KCL 遷移工具以從階段 2 轉返到階段 1 後,您會看到以下其中一個訊息:

訊息 1

「轉返已完成。您的應用程式正在執行階段 2 (2x 相容) 功能。請使用階段 1 組態部署 KCL 3.5.x 應用程式,以轉返至階段 1。」

必要動作:您的工作者是在 KCL 1.x 相容模式下執行 (階段 2 尚未自動轉換為完整的 3.x 負載平衡)。使用階段 1 組態 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) 將 KCL 3.5.x+ 應用程式重新部署到您的工作者。

訊息 2

「轉返已完成。您的 KCL 應用程式正在執行階段 2 (3x) 功能,並已復原至階段 2 (2x 相容) 模式。如果您在短時間內沒有看到緩解措施,請使用階段 1 組態部署 KCL 3.5.x 應用程式,以回復至階段 1。」

必要動作:您的工作者已自動轉換為完整的 KCL 3.x 負載平衡,而 KCL Migration Tool 將其切換回 KCL 1.x 相容模式。如果問題已解決,您不需要重新部署。如果問題仍然存在,請使用階段 1 組態 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) 將 KCL 3.5.x+ 應用程式重新部署到您的工作者。