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 von Shards und Metriken mit DynamoDB Streams und Kinesis Data Streams
Überlegungen zur Shard-Verwaltung für Kinesis Data Streams
Ein Kinesis-Daten-Stream zählt seinen Durchsatz in Shards. In Amazon Kinesis Data Streams können Sie zwischen einem On-Demand-Modus und einem bereitgestellten Modus für Ihre Datenströme wählen.
Wir empfehlen, den On-Demand-Modus für Ihren Kinesis-Daten-Stream zu verwenden, wenn Ihre DynamoDB-Schreib-Workload sehr variabel und unvorhersehbar ist. Im On-Demand-Modus ist keine Kapazitätsplanung erforderlich, da Kinesis Data Streams die Shards automatisch verwaltet, um den erforderlichen Durchsatz bereitzustellen.
Bei vorhersehbaren Workloads können Sie den bereitgestellten Modus für Ihren Kinesis-Daten-Stream verwenden. Im bereitgestellten Modus müssen Sie die Anzahl der Shards für den Datenstrom angeben, um die Datenerfassungsdatensätze der Änderungen aus DynamoDB aufzunehmen. Um die Anzahl der Shards zu ermitteln, die der Kinesis-Daten-Stream für die DynamoDB-Tabelle benötigt, sind folgende Eingabewerte erforderlich:
-
Die durchschnittliche Größe des Datensatzes Ihrer DynamoDB-Tabelle in Byte (
average_record_size_in_bytes). -
Die maximale Anzahl von Schreibvorgängen, die Ihre DynamoDB-Tabelle pro Sekunde ausführen wird. Dazu gehören das Erstellen, Löschen und Aktualisieren von Vorgängen, die von Ihren Anwendungen ausgeführt werden, sowie automatisch generierte Vorgänge, z. B. von Time to Live generierte Löschvorgänge (
write_throughput). -
Der Prozentsatz der Aktualisierungs- und Überschreibvorgänge, die Sie für Ihre Tabelle ausführen, im Vergleich zu Erstellungs- oder Löschvorgängen (
percentage_of_updates). Aktualisierungs- und Überschreibvorgänge replizieren sowohl die alten als auch die neuen Images des geänderten Elements in den Stream. Dies erzeugt die doppelte DynamoDB-Elementgröße.
Sie können die Anzahl der Shards (number_of_shards), die der Kinesis-Daten-Stream benötigt, mit den Eingabewerte in der folgenden Formel berechnen:
number_of_shards = ceiling( max( ((write_throughput * (4+percentage_of_updates) * average_record_size_in_bytes) / 1024 / 1024), (write_throughput/1000)), 1)
Nehmen wir an, Sie haben einen maximalen Durchsatz von 1 040 Schreibvorgängen pro Sekunde (write_throughput) bei einer durchschnittlichen Datensatzgröße von 800 Byte (average_record_size_in_bytes). Wenn 25 Prozent dieser Schreibvorgänge Aktualisierungsvorgänge sind (percentage_of_updates), benötigen Sie zwei Shards (number_of_shards) für Ihren DynamoDB-Streaming-Durchsatz:
ceiling( max( ((1040 * (4+25/100) * 800)/ 1024 / 1024), (1040/1000)), 1).
Beachten Sie Folgendes, bevor Sie die Formel verwenden, um die Anzahl der Shards zu berechnen, die im bereitgestellten Modus für Kinesis-Daten-Streams erforderlich sind:
-
Mit dieser Formel können Sie die Anzahl der Shards abschätzen, die für die Aufnahme Ihrer DynamoDB-Änderungsdatensätze erforderlich sind. Sie stellt nicht die Gesamtzahl der Shards dar, die in Ihrem Kinesis-Daten-Stream benötigt werden, z. B. Shards, die zur Unterstützung zusätzlicher Nutzer von Kinesis-Daten-Streams erforderlich sind.
-
Im Bereitstellungsmodus kann es immer noch zu Ausnahmen beim Lese- und Schreibdurchsatz kommen, wenn Sie Ihren Datenstrom nicht für den Spitzendurchsatz konfigurieren. In diesem Fall müssen Sie Ihren Datenstrom manuell skalieren, um den Datenverkehr zu bewältigen.
-
Diese Formel berücksichtigt die zusätzliche Überlastung, die von DynamoDB generiert wird, bevor die Änderungsprotokoll-Datensätze an Kinesis Data Streams gestreamt werden.
Weitere Informationen zu den Kapazitätsmodi in Kinesis Data Streams finden Sie unter Auswahl des Datenstrom-Kapazitätsmodus. Weitere Informationen zu den Preisunterschieden zwischen den verschiedenen Kapazitätsmodi finden Sie unter Amazon Kinesis Data Streams – Preise
Änderung der Datenerfassung für Kinesis Data Streams überwachen
DynamoDB bietet mehrere CloudWatch Amazon-Metriken, mit denen Sie die Replikation von Change Data Capture nach Kinesis überwachen können. Eine vollständige Liste der CloudWatch Metriken finden Sie unter. DynamoDB-Metriken und -Dimensionen
Es wird empfohlen, die folgenden Elemente sowohl während der Stream-Aktivierung als auch in der Produktion zu überwachen, um festzustellen, ob der Stream über ausreichende Kapazität verfügt:
-
ThrottledPutRecordCount: Die Anzahl der Datensätze, die von Ihrem Kinesis-Daten-Stream aufgrund unzureichender Kinesis-Daten-Stream-Kapazität gedrosselt wurden. DerThrottledPutRecordCountsollte so niedrig wie möglich bleiben, obwohl sie bei außergewöhnlichen Nutzungsspitzen eine gewisse Drosselung erfahren könnten. DynamoDB versucht erneut, gedrosselte Datensätze in das Kinesis Data Stream zu senden. Dies kann jedoch zu einer höheren Replikationslatenz führen.Wenn eine übermäßige und regelmäßige Drosselung auftritt, müssen Sie möglicherweise die Anzahl der Kinesis-Stream-Shards proportional zum beobachteten Schreibdurchsatz Ihrer Tabelle erhöhen. Weitere Informationen zur Bestimmung der Größe eines Kinesis Data Streams finden Sie unter Bestimmen der anfänglichen Größe eines Kinesis Data Streams.
-
AgeOfOldestUnreplicatedRecord: Die verstrichene Zeit seit der ältesten Änderung auf Elementebene, die noch in den Kinesis Data Stream repliziert wurde, wurde in der DynamoDB-Tabelle angezeigt. Im Normalbetrieb sollteAgeOfOldestUnreplicatedRecordin der Reihenfolge von Millisekunden liegen. Diese Zahl wächst aufgrund erfolgloser Replikationsversuche, wenn diese durch kundengesteuerte Konfigurationsoptionen verursacht werden.Wenn die Metrik
AgeOfOldestUnreplicatedRecord168 Stunden überschreitet, wird die Replikation von Änderungen auf Elementebene aus der DynamoDB-Tabelle in den Kinesis-Daten-Stream automatisch deaktiviert.Kundengesteuerte Konfigurationsbeispiele, die zu erfolglosen Replikationsversuchen führen, sind eine zu gering bereitgestellte Kinesis-Daten-Stream-Kapazität, die zu übermäßiger Drosselung führt, oder eine manuelle Aktualisierung der Zugriffsrichtlinien Ihres Kinesis-Daten-Streams, die DynamoDB das Hinzufügen von Daten zu Ihrem Datenstrom verweigern. Um diese Metrik so niedrig wie möglich zu halten, müssen Sie möglicherweise die richtige Bereitstellung Ihrer Kinesis-Daten-Stream-Kapazität sicherstellen und sicherstellen, dass die Berechtigungen von DynamoDB unverändert bleiben.
-
FailedToReplicateRecordCount: Die Anzahl der Datensätze, die DynamoDB nicht in Ihren Kinesis-Datenstrom repliziert hat. Bestimmte Elemente, die größer als 34 KB sind, können sich vergrößern, um Datensätze zu ändern, die größer als die Elementgrößengrenze von 1 MB von Kinesis Data Streams sind. Diese Größenerweiterung tritt auf, wenn diese Elemente, die größer als 34 KB sind, eine große Anzahl von booleschen oder leeren Attributwerten enthalten. Boolesche und leere Attributwerte werden in DynamoDB als 1 Byte gespeichert, erweitern sich jedoch auf bis zu 5 Byte, wenn sie mit Standard-JSON für die Kinesis-Data-Streams-Replikation serialisiert werden. DynamoDB kann solche Änderungsdatensätze nicht in Ihren Kinesis Dats Stream replizieren. DynamoDB überspringt diese Änderungsdatensätze und repliziert automatisch nachfolgende Datensätze.
Sie können CloudWatch Amazon-Alarme erstellen, die eine Amazon Simple Notification Service (Amazon SNS) -Nachricht zur Benachrichtigung senden, wenn eine der oben genannten Metriken einen bestimmten Schwellenwert überschreitet.