Entscheiden Sie sich für eine Strategie für das Resharding - 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.

Entscheiden Sie sich für eine Strategie für das Resharding

Der Zweck des Reshardings in Amazon Kinesis Data Streams besteht darin, Ihrem Stream die Anpassung an Änderungen in der Durchflussrate von Daten zu ermöglichen. Sie teilen Shards, um die Kapazität (und Kosten) Ihres Streams zu erhöhen. Sie führen Shards zusammen, um die Kosten (und Kapazität) Ihres Streams zu verringern.

Ein Ansatz für das Resharding besteht darin, jeden Shard im Stream zu teilen – wodurch sich die Kapazität des Streams verdoppeln würde. Dadurch kann jedoch mehr zusätzliche Kapazität bereitgestellt werden, als Sie tatsächlich benötigen, was unnötige Kosten verursachen würde.

Sie können darüber hinaus Metriken verwenden, um zu ermitteln, welche Ihre heißen oder kalten Shards sind, d. h. Shards, die viel mehr bzw. viel weniger Daten empfangen als erwartet. Sie könnten dann selektiv die heißen Shards teilen, um die Kapazität für die Hash-Schlüssel zu erhöhen, die auf solche Shards abzielen. Gleichermaßen könnten Sie kalte Shards zusammenführen, um deren ungenutzte Kapazitäten besser zu nutzen.

Sie können einige Leistungsdaten für Ihren Stream aus den CloudWatch Amazon-Metriken abrufen, die Kinesis Data Streams veröffentlicht. Sie können jedoch auch eigene Metriken für Ihre Streams erfassen. Ein Ansatz wäre die Protokollierung der Hash-Schlüsselwerte, die von den Partitionsschlüsseln für Ihre Datensätze generiert wurden. Beachten Sie, dass Sie den Partitionsschlüssel zu dem Zeitpunkt festlegen, an dem Sie den Datensatz zu dem Stream hinzufügen.

putRecordRequest.setPartitionKey( String.format( "myPartitionKey" ) );

Kinesis Data Streams verwendet MD5, um den Hash-Schlüssel aus dem Partitionsschlüssel zu berechnen. Da Sie den Partitionsschlüssel für den Datensatz angeben, könnten Sie ihn verwenden, MD5 um den Hash-Schlüsselwert für diesen Datensatz zu berechnen und zu protokollieren.

Sie könnten auch die IDs Shards protokollieren, denen Ihre Datensätze zugewiesen sind. Die Shard-ID ist verfügbar über die getShardId-Methode des putRecordResults-Objekts, das von der putRecords-Methode zurückgegeben wurde, und des putRecordResult-Objekts, das von der putRecord-Methode zurückgegeben wurde.

String shardId = putRecordResult.getShardId();

Anhand des Shards IDs und der Hash-Schlüsselwerte können Sie feststellen, welche Shards und Hash-Schlüssel den meisten oder den wenigsten Traffic erhalten. Anschließend können Sie mithilfe von Resharding mehr oder weniger Kapazitäten bereitstellen, wie für diese Schlüssel angemessen.