本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
回復至先前的 KCL 版本
本主題說明如何將消費者應用程式復原至先前的 KCL 版本。復原程序包含兩個步驟:
-
執行 KCL 遷移工具
。 -
重新部署先前的 KCL 版本程式碼。
步驟 1:執行 KCL 遷移工具
當您需要轉返至先前的 KCL 版本時,您必須執行 KCL Migration Tool。此工具會執行兩個重要任務:
-
它會移除 DynamoDB 中租用資料表上稱為工作者指標資料表和全域次要索引的中繼資料資料表。這些成品是由 KCL 3.x 建立,但當您回復到先前的版本時不需要。
-
它可讓所有工作者在與 KCL 1.x 相容的模式下執行,並開始使用先前 KCL 版本中使用的負載平衡演算法。如果您在 KCL 3.x 中遇到新負載平衡演算法的問題,這會立即緩解問題。
重要
DynamoDB 中的協調器狀態資料表必須存在,且不得在遷移、轉返和轉返過程中刪除。
注意
請務必讓消費者應用程式中的所有工作者在指定時間使用相同的負載平衡演算法。KCL Migration Tool 可確保 KCL 3.x 取用者應用程式中的所有工作者都切換到 KCL 1.x 相容模式,以便所有工作者在應用程式復原至先前的 KCL 版本期間執行相同的負載平衡演算法。
您可以在 KCL GitHub 儲存庫的指令碼目錄中下載 KCL Migration Tool
python3 ./KclMigrationTool.py --region
region
--mode rollback [--application_nameapplicationName
] [--lease_table_nameleaseTableName
] [--coordinator_state_table_namecoordinatorStateTableName
] [--worker_metrics_table_nameworkerMetricsTableName
]
參數
--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 遷移工具產生的輸出中提及 2.x 版時,應解釋為參考 KCL 1.x 版。執行指令碼不會執行完整的轉返,只會將負載平衡演算法切換到 KCL 1.x 版中使用的演算法。
執行復原的 KCL 遷移工具後,您會看到以下其中一個訊息:
- 訊息 1
-
「轉返已完成。您的應用程式執行 2 倍相容功能。請使用先前的 KCL 版本部署程式碼,以轉返至先前的應用程式二進位檔。」
必要動作:這表示您的工作者是在 KCL 1.x 相容模式下執行。將具有先前 KCL 版本的程式碼重新部署到您的工作者。
- 訊息 2
-
「轉返已完成。您的 KCL 應用程式正在執行 3 倍功能,並將轉返至 2 倍相容功能。如果您在短時間內沒有看到緩解措施,請使用先前的 KCL 版本部署程式碼,以回復到先前的應用程式二進位檔。」
必要動作:這表示您的工作者是在 KCL 3.x 模式下執行,而 KCL Migration Tool 會將所有工作者切換到 KCL 1.x 相容模式。將具有先前 KCL 版本的程式碼重新部署到您的工作者。
- 訊息 3
-
「應用程式已復原。任何可以刪除的 KCLv3 資源都已清除,以避免產生費用,直到應用程式可以隨著遷移向前推出。」
必要動作:這表示您的工作者已復原,以在 KCL 1.x 相容模式下執行。將具有先前 KCL 版本的程式碼重新部署到您的工作者。