Begrenzungen für KPL-Wiederholungen und Quoten - Amazon Kinesis Data Streams

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.

Begrenzungen für KPL-Wiederholungen und Quoten

Wenn Sie Benutzerdatensätze von Kinesis Producer Library (KPL) mit der KPL-Operation addUserRecord() hinzufügen, erhält ein Datensatz einen Zeitstempel und wird einem Puffer hinzugefügt, wobei der Konfigurationsparameter RecordMaxBufferedTime eine Frist festsetzt. Diese Kombination aus Zeitstempel und Frist legt die Pufferpriorität fest. Datensätze werden aufgrund der folgenden Kriterien aus dem Puffer entfernt:

  • Puffer-Priorität

  • Aggregierungskonfiguration

  • Sammlungskonfiguration

Die Parameter der Aggregierungskonfiguration und der Sammlungskonfiguration, die das Pufferverhalten beeinflussen, sind:

  • AggregationMaxCount

  • AggregationMaxSize

  • CollectionMaxCount

  • CollectionMaxSize

Die gelöschten Datensätze werden dann mithilfe eines Aufrufs der API-Operation PutRecords von Kinesis Data Streams als Datensätze von Amazon Kinesis Data Streams an Ihren Kinesis-Datenstrom gesendet. Die Operation PutRecords sendet Anfragen an Ihre Stream, die gelegentlich vollständige oder teilweise Fehlschläge zeigen. Fehlgeschlagene Datensätze werden automatisch wieder dem KPL-Puffer hinzugefügt. Die neue Frist wird auf der Grundlage des kleineren dieser beiden Werte festgelegt:

  • Die Hälfte der aktuellen RecordMaxBufferedTime-Konfiguration

  • Die Aufbewahrungszeit des Datensatzes

Mit dieser Strategie können wiederholte KPL-Benutzerdatensätze in nachfolgenden API-Aufrufe von Kinesis Data Streams aufgenommen werden, um den Durchsatz zu verbessern und die Komplexität zu verringern. Gleichzeitig wird die Aufbewahrungszeit des Datensatzes von Kinesis Data Streams durchgesetzt. Es gibt keinen Backoff-Algorithmus, was dies zu einer relativ aggressiven Wiederholungsstrategie macht. Spamming aufgrund übermäßiger Wiederholungen wird durch die Quotengrenze bewirkt, die im nächsten Abschnitt erläutert wird.

Quotenbegrenzung

Das KPL enthält eine Quotenbegrenzungsfunktion, die den pro Shard von einem einzelnen Producer gesendeten Durchsatz begrenzt. Die Quotenbegrenzung wird durch einen Token-Bucket-Algorithmus mit separaten Buckets für Datensätze von Kinesis Data Streams und Bytes implementiert. Jeder erfolgreiche Schreibvorgang in einen Kinesis-Datenstrom fügt jedem Bucket ein Token (oder mehrere Token) hinzu, bis ein bestimmter Grenzwert erreicht ist. Dieser Grenzwert ist konfigurierbar, ist aber standardmäßig um 50 % höher als das tatsächliche Shard-Limit eingestellt, um die Shard-Sättigung durch einen einzelnen Produzenten zu ermöglichen.

Sie können diesen Grenzwert herabsetzen, um Spamming durch übermäßig viele Wiederholungsversuche zu reduzieren. Die bewährte Methode besteht jedoch darin, dass jeder Produzent aggressiv einen maximalen Durchsatz durch Wiederholungen zu erzielen versucht und mit der daraus resultierenden, als übermäßig angesehenen Drosselung so umzugehen, dass die Kapazität des Streams erweitert und eine geeignete Partitionsschlüsselstrategie implementiert wird.