Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Rollback zu einer früheren KCL-Version
In diesem Thema wird erklärt, wie Sie ein Rollback Ihrer KCL 3.5.x+ Consumer-Anwendung auf KCL 1.x durchführen. Der Rollback-Vorgang hängt davon ab, in welcher Migrationsphase sich Ihre Anwendung gerade befindet.
Führen Sie ein Rollback von Phase 1 auf KCL 1.x durch
Wenn sich Ihre Anwendung in Phase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) befindet, können Sie zu KCL 1.x zurückkehren, indem Sie Ihren vorherigen Code erneut bereitstellen. Phase 1 ist abwärtskompatibel mit KCL 1.x und erstellt keine migrationsspezifischen Einträge in der Leasetabelle. Es wird kein Migrationstool benötigt. Um ein Rollback von Phase 1 durchzuführen, stellen Sie den Code mit Ihrer KCL 1.x-Version erneut allen Workern zur Verfügung.
Wichtig
Phase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) ist eine wichtige Änderung für das Rollback. Sobald Ihre Anwendung in Phase 2 eintritt, werden Einträge (WORKER_METRIC_STATSundMigration3.0), die nichts mit dem Leasing zu tun haben, in die Leasing-Tabelle geschrieben, die nicht abwärtskompatibel mit KCL 1.x sind. Dadurch wird ein direktes Rollback zu KCL 1.x dauerhaft verhindert. Wir empfehlen dringend, Ihre Anwendung in Phase 1 für einen längeren Zeitraum zu sichern, um die Stabilität zu überprüfen, bevor Sie mit Phase 2 fortfahren.
Kehren Sie von Phase 2 zu Phase 1 zurück
Wenn sich Ihre Anwendung in Phase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) befindet, müssen Sie das KCL-Migrationstool CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) zurückzukehren. Dies ist ein zweistufiger Prozess:
-
Führen Sie das KCL-Migrationstool
auf der Website aus GitHub . -
Stellen Sie den Code mit der Phase-1-Konfiguration erneut bereit (optional).
Wichtig
Sie können zwei Stufen nicht rückgängig machen (von Phase 2 auf Phase 1 und dann auf KCL 1.x). Das KCL-Migrationstool verarbeitet nur das Rollback von Phase 2 zu Phase 1. Das Tool löscht keine Einträge, die nichts mit Leasing zu tun haben, aus der Leasetabelle. Diese Einträge sind nicht abwärtskompatibel mit KCL 1.x, weshalb ein zweistufiges Rollback von Phase 2 direkt zu KCL 1.x nicht möglich ist.
Schritt 1: Ausführen des KCL Migration Tools
Wenn Sie ein Rollback von Phase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) zu Phase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) durchführen müssen, führen Sie das KCL-Migrationstool aus. Das Tool führt die folgenden Aufgaben aus:
-
Es entfernt den globalen sekundären Index (LeaseOwnerToLeaseKeyIndex) aus der Leasetabelle in DynamoDB. Dieser Index wird von KCL 3.5.x+ erstellt, wird aber nicht benötigt, wenn Sie zu Phase 1 zurückkehren.
-
Dadurch werden alle Worker in einem mit KCL 1.x kompatiblen Modus ausgeführt und verwenden wieder den Load-Balancing-Algorithmus aus früheren KCL-Versionen. Wenn Sie Probleme mit dem neuen Load-Balancing-Algorithmus in KCL 3.5.x+ haben, wird das Problem dadurch sofort behoben.
Wichtig
Der Eintrag für den Koordinatorstatus (Migration3.0) in der Leasetabelle darf während des Migrations-, Rollback- und Rollforward-Prozesses nicht gelöscht werden.
Anmerkung
Alle Worker in Ihrer Consumer-Anwendung müssen zu einem bestimmten Zeitpunkt denselben Load-Balancing-Algorithmus verwenden. Das KCL-Migrationstool stellt sicher, dass alle Worker in Ihrer KCL 3.5.x+ Consumer-Anwendung in den KCL 1.x-kompatiblen Modus wechseln, sodass alle Worker beim Rollback der Bereitstellung zu Phase 1 denselben Lastausgleichsalgorithmus ausführen.
Sie können das KCL-Migrationstool im Skriptverzeichnis des KCL-Repositorys
python3 ./KclMigrationTool.py --regionregion--mode rollback [--application_nameapplicationName] [--lease_table_nameleaseTableName]
Parameters
--region-
Ersetzen Sie
regiondurch Ihre AWS-Region. --application_name-
Dieser Parameter ist erforderlich, wenn Sie den Standardnamen für Ihre Leasingtabelle verwenden. Wenn Sie einen benutzerdefinierten Namen für die Leasingtabelle angegeben haben, können Sie diesen Parameter weglassen. Ersetzen Sie ihn
applicationNamedurch Ihren tatsächlichen KCL-Anwendungsnamen. Das Tool verwendet diesen Namen, um den Standardtabellennamen abzuleiten, falls kein benutzerdefinierter Name angegeben wird. --lease_table_name-
Dieser Parameter wird benötigt, wenn Sie in Ihrer KCL-Konfiguration einen benutzerdefinierten Namen für die Leasetabelle festgelegt haben. Wenn Sie den Standardtabellennamen verwenden, können Sie diesen Parameter weglassen.
leaseTableNameErsetzen Sie ihn durch den benutzerdefinierten Tabellennamen, den Sie für Ihre Leasing-Tabelle angegeben haben.
Schritt 2: Stellen Sie den Code mit der Phase-1-Konfiguration erneut bereit (optional)
Nachdem Sie das KCL-Migrationstool für ein Rollback von Phase 2 auf Phase 1 ausgeführt haben, wird eine der folgenden Meldungen angezeigt:
- Nachricht 1
-
„Rollback completed. In Ihrer Anwendung wurde die Phase-2-Funktionalität (2-fach kompatibel) ausgeführt. Bitte kehren Sie zu Phase 1 zurück, indem Sie Ihre KCL 3.5.x-Anwendung mit der Phase-1-Konfiguration bereitstellen.“
Erforderliche Maßnahme: Ihre Worker liefen im KCL 1.x-kompatiblen Modus (Phase 2 hatte noch nicht automatisch auf den vollständigen 3.x-Load Balancing umgestellt). Stellen Sie Ihre KCL 3.5.x+-Anwendung mit der Phase-1-Konfiguration () erneut für Ihre Mitarbeiter bereit.
CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1 - Nachricht 2
-
„Rollback completed. Ihre KCL-Anwendung verfügte über die Phase-2-Funktionalität (3x) und wurde in den Phase 2-Modus (2x-kompatibel) zurückgesetzt. Wenn Sie nach kurzer Zeit keine Abhilfemaßnahmen sehen, kehren Sie bitte zu Phase 1 zurück, indem Sie Ihre KCL 3.5.x-Anwendung mit der Phase-1-Konfiguration bereitstellen.“
Erforderliche Maßnahme: Ihre Mitarbeiter hatten automatisch auf den vollständigen KCL 3.x-Load Balancing umgestellt und das KCL-Migrationstool hat sie wieder in den KCL 1.x-kompatiblen Modus versetzt. Wenn das Problem behoben ist, müssen Sie die Bereitstellung nicht erneut durchführen. Wenn das Problem weiterhin besteht, stellen Sie Ihre KCL 3.5.x+-Anwendung mit der Phase-1-Konfiguration () erneut für Ihre Mitarbeiter bereit.
CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1