回復至先前的 KCL 版本 - Amazon Kinesis Data Streams

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

回復至先前的 KCL 版本

本主題說明將消費者復原至先前版本的步驟。當您需要復原時,有兩個步驟的程序:

  1. 執行 KCL 遷移工具

  2. 重新部署先前的 KCL 版本代碼 (選用)。

步驟 1:執行 KCL 遷移工具

當您需要轉返至先前的 KCL 版本時,您必須執行 KCL Migration Tool。KCL Migration Tool 會執行兩項重要任務:

  • 它會移除 DynamoDB 中租用資料表上稱為工作者指標資料表和全域次要索引的中繼資料資料表。這兩個成品是由 KCL 3.x 建立,但當您回復到先前的版本時不需要。

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

重要

DynamoDB 中的協調器狀態資料表必須存在,且不得在遷移、轉返和轉返程序期間刪除。

注意

請務必讓消費者應用程式中的所有工作者在指定時間使用相同的負載平衡演算法。KCL Migration Tool 可確保 KCL 3.x 取用者應用程式中的所有工作者都切換到 KCL 2.x 相容模式,以便所有工作者在轉返付款期間執行相同的負載平衡演算法,回到先前的 KCL 版本。

您可以在 KCL GitHub 儲存庫的指令碼目錄中下載 KCL Migration Tool GitHub 指令碼可以從任何工作者或任何具有寫入協調器狀態資料表、刪除工作者指標資料表和更新租用資料表所需許可的主機執行。如需執行指令碼KCL 取用者應用程式所需的 IAM 許可所需的 IAM 許可,請參閱 。每個 KCL 應用程式只能執行指令碼一次。您可以使用下列命令執行 KCL Migration Tool:

python3 ./KclMigrationTool.py --region <region> --mode rollback [--application_name <applicationName>] [--lease_table_name <leaseTableName>] [--coordinator_state_table_name <coordinatorStateTableName>] [--worker_metrics_table_name <workerMetricsTableName>]

參數

  • --region:將 取代<region>為 AWS 區域。

  • --application_name:如果您使用 DynamoDB 中繼資料表 (租用表、協調器狀態表和工作者指標表) 的預設名稱,則需要此參數。如果您已為這些資料表指定自訂名稱,您可以省略此參數。將 取代<applicationName>為您實際的 KCL 應用程式名稱。如果未提供自訂名稱,工具會使用此名稱衍生預設資料表名稱。

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

  • --coordinator_state_table_name (選用):當您在 KCL 組態中為協調器狀態資料表設定自訂名稱時,需要此參數。如果您使用的是預設資料表名稱,則可以省略此參數。<coordinatorStateTableName> 將 取代為您為協調器狀態資料表指定的自訂資料表名稱。

  • --worker_metrics_table_name (選用):當您在 KCL 組態中為工作者指標資料表設定自訂名稱時,需要此參數。如果您使用的是預設資料表名稱,則可以省略此參數。<workerMetricsTableName> 將 取代為您為工作者指標資料表指定的自訂資料表名稱。

步驟 2:使用先前的 KCL 版本重新部署程式碼 (選用)

執行復原的 KCL 遷移工具後,您會看到以下其中一個訊息:

  • 訊息 1:「Rollback 已完成。您的 KCL 應用程式正在執行 KCL 2.x 相容模式。如果您沒有看到任何迴歸的緩解,請使用先前的 KCL 版本部署程式碼,以回復到先前的應用程式二進位檔。」

    • 必要動作:這表示您的工作者是在 KCL 2.x 相容模式下執行。如果問題仍然存在,請將具有先前 KCL 版本的程式碼重新部署到您的工作者。

  • 訊息 2:「Rollback 已完成。您的 KCL 應用程式正在執行 KCL 3.x 功能模式。除非您在 5 分鐘內沒有看到問題的任何緩解措施,否則不需要轉返到先前的應用程式二進位檔。如果您仍然有問題,請使用先前的 KCL 版本部署程式碼,以轉返至先前的應用程式二進位檔。」

    • 必要動作:這表示您的工作者是在 KCL 3.x 模式下執行,而 KCL Migration Tool 會將所有工作者切換到 KCL 2.x 相容模式。如果問題已解決,您不需要使用先前的 KCL 版本重新部署程式碼。如果問題仍然存在,請將具有先前 KCL 版本的程式碼重新部署到您的工作者。