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.
Verwenden Sie Resharding, Skalierung und Parallelverarbeitung, um die Anzahl der Shards zu ändern
Das Resharding ermöglicht Ihnen das Erhöhen oder Verringern der Anzahl der Shards in einem Stream zur Anpassung an die Datenrate. Das Resharding wird üblicherweise von einer administrativen Anwendung durchgeführt, die Datenverwaltungsmetriken zu Shards überwacht. Der KCL selbst initiiert zwar keine Resharding-Operationen, ist aber so konzipiert, dass er sich an Änderungen in der Anzahl der Shards anpasst, die sich aus dem Resharding ergeben.
Wie unter erwähntVerwenden Sie eine Leasetabelle, um nachzuverfolgen, welche Shards von der Consumer-Anwendung verarbeitet wurden KCL, KCL verfolgt der die Shards im Stream mithilfe einer Amazon DynamoDB-Tabelle. Wenn als Ergebnis von Resharding neue Shards erstellt werden, KCL erkennt der die neuen Shards und füllt neue Zeilen in der Tabelle auf. Die Auftragnehmer entdecken die neuen Shards automatisch und erstellen Prozessoren, um die Daten dieser neuen Shards zu verwalten. KCLAußerdem werden die Shards im Stream auf alle verfügbaren Worker und Datenprozessoren verteilt.
KCLDadurch wird sichergestellt, dass alle Daten, die vor dem Resharding in Shards vorhanden waren, zuerst verarbeitet werden. Nachdem diese Daten verarbeitet wurden, werden die Daten der neuen Shards an die Datensatzprozessoren gesendet. Auf diese Weise wird die Reihenfolge KCL beibehalten, in der Datensätze für einen bestimmten Partitionsschlüssel zum Stream hinzugefügt wurden.
Beispiel: Resharding, Skalierung und Parallelverarbeitung
Das folgende Beispiel zeigt, wie Sie mit Skalierung KCL und Resharding umgehen können:
-
Zum Beispiel, wenn Ihre Anwendung auf einer EC2 Instance läuft und einen Kinesis-Datenstream mit vier Shards verarbeitet. Diese eine Instanz hat einen KCL Worker und vier Datensatzprozessoren (ein Datensatzprozessor für jeden Shard). Diese vier Datensatzprozessoren werden parallel innerhalb desselben Prozesses ausgeführt.
-
Wenn Sie dann die Anwendung für die Verwendung einer weiteren Instance skalieren, verarbeiten zwei Instances einen Stream mit vier Shards. Wenn der KCL Worker auf der zweiten Instanz startet, erfolgt ein Lastenausgleich mit der ersten Instanz, sodass jede Instanz nun zwei Shards verarbeitet.
-
Dann beschließen Sie, Ihre vier Shards auf fünf Shards aufzuteilen. Die KCL wiederum koordiniert die Verarbeitung zwischen den Instanzen: Eine Instanz verarbeitet drei Shards, und die andere verarbeitet zwei Shards. Eine ähnliche Koordinierung erfolgt, wenn Sie Shards zusammenführen.
Wenn Sie den verwenden, sollten Sie in der Regel sicherstellenKCL, dass die Anzahl der Instanzen die Anzahl der Shards nicht überschreitet (außer für Ausfallbereitschaftszwecke). Jeder Shard wird von genau einem KCL Worker verarbeitet und verfügt über genau einen entsprechenden Datensatzprozessor, sodass Sie nie mehrere Instanzen benötigen, um einen Shard zu verarbeiten. Ein Auftragnehmer kann allerdings eine beliebige Anzahl von Shards verarbeiten, deshalb ist es kein Problem, wenn Sie mehr Shards als Instances haben.
Testen Sie eine Kombination der folgenden Ansätze, wenn Sie die Verarbeitung in Ihrer Anwendung optimieren möchten:
-
Erhöhung der Instance-Größe (da alle Datensatzprozessoren innerhalb eines Prozesses parallel ausgeführt werden)
-
Erhöhung der Anzahl der Instances bis zur maximalen Anzahl offener Shards (da Shards unabhängig verarbeitet werden können)
-
Erhöhung der Anzahl der Shards (fördert die Parallelität)
Beachten Sie, dass Sie Auto Scaling für die automatische Skalierung Ihrer Instances basierend auf entsprechenden Metriken nutzen können. Weitere Informationen finden Sie im Amazon EC2 Auto Scaling Scaling-Benutzerhandbuch.
Wenn Resharding die Anzahl der Shards im Stream erhöht, erhöht die entsprechende Erhöhung der Anzahl der Datensatzprozessoren die Auslastung der EC2 Instances, die sie hosten. Wenn die Instances Teil einer Auto Scaling-Gruppe sind und die Last entsprechend steigt, fügt die Auto Scaling-Gruppe weitere Instances hinzu, damit die höhere Last ausgeglichen wird. Konfigurieren Sie Ihre Instances so, dass Ihre Anwendung Amazon Kinesis Data Streams beim Startup gestartet wird. So werden zusätzliche Auftragnehmer und Datensatzprozessoren in der neuen Instance sofort aktiviert.
Weitere Informationen zum Resharding finden Sie unter Einen Stream erneut teilen.