Zwei Shards zusammenführen - 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.

Zwei Shards zusammenführen

Bei einem Shard-Zusammenführungsvorgang werden zwei festgelegte Shards in einem einzelnen Shard kombiniert. Nach der Zusammenfassung empfängt der einzelne untergeordnete Shard Daten für alle Hash-Schlüsselwerte, die in den zwei übergeordneten Shards enthalten sind.

Shard-Nachbarschaft

Um zwei Shards zusammenführen zu können, müssen die Shards benachbart sein. Zwei Shards gelten als benachbart, wenn der Verband der Hash-Schlüsselbereiche für die beiden Shards eine fortlaufende Reihe ohne Lücken bildet. Wenn Sie zum Beispiel über zwei Shards verfügen, von denen einer einen Hash-Schlüsselbereich von 276 bis 381 und der andere einen Hash-Schlüsselbereich von 382 bis 454 aufweist, dann könnten Sie diese beiden Shards zu einem einzigen Shard zusammenführen, der über einen Hash-Schlüsselbereich von 276 bis 454 verfügen würde.

Wenn Sie in einem anderen Beispiel über zwei Shards verfügen, von denen einer einen Hash-Schlüsselbereich von 276 bis 381 und der andere einen Hash-Schlüsselbereich von 455 bis 560 aufweist, dann könnten Sie diese beiden Shards nicht zusammenführen, weil ein oder mehr weitere Shards zwischen diesen beiden liegen würden, die den Bereich von 382 bis 454 abdecken.

Der Satz aller OPEN Shards in einem Stream — als Gruppe — umfasst immer den gesamten Bereich der Hash-Schlüsselwerte. MD5 Weitere Informationen zu Shard-Status – wie beispielsweise CLOSED – finden Sie unter Denken Sie an Datenrouting, Datenpersistenz und den Shard-Status nach einem Reshard.

Zum Identifizieren von Shards, die zum Zusammenführen infrage kommen, sollten Sie alle Shards im Status CLOSED herausfiltern. Shards mit dem Status OPEN – also nicht CLOSED – weisen die Sequenzendzahl null auf. Sie können die Sequenzendzahl für einen Shard folgendermaßen testen:

if( null == shard.getSequenceNumberRange().getEndingSequenceNumber() ) { // Shard is OPEN, so it is a possible candidate to be merged. }

Nachdem die geschlossenen Shards herausgefiltert wurden, sortieren Sie die verbleibenden Shards nach dem höchsten Hash-Schlüsselwert, der von den Shards jeweils unterstützt wird. Sie können diesen Wert folgendermaßen abrufen:

shard.getHashKeyRange().getEndingHashKey();

Wenn zwei Shards in dieser gefilterten, sortierten Liste benachbart sind, können sie zusammengeführt werden.

Code für den Zusammenführungsvorgang

Mit dem folgenden Code lassen sich zwei Shards zusammenführen. Der Code setzt voraus, dass myStreamName den Namen Ihres Streams enthält und dass die Objektvariablen shard1 und shard2 die zwei benachbarten zusammenzuführenden Shards enthalten.

Beginnen Sie für den Zusammenführungsvorgang mit der Instanziierung eines neuen mergeShardsRequest-Objekts. Geben Sie den Stream-Namen mit der setStreamName-Methode an. Geben Sie anschließend die zwei zusammenzuführenden Shards mithilfe der Methoden setShardToMerge und setAdjacentShardToMerge an. Rufen Sie anschließend die Methode mergeShards auf dem Client von Kinesis Data Streams aus, um den Vorgang auszuführen.

MergeShardsRequest mergeShardsRequest = new MergeShardsRequest(); mergeShardsRequest.setStreamName(myStreamName); mergeShardsRequest.setShardToMerge(shard1.getShardId()); mergeShardsRequest.setAdjacentShardToMerge(shard2.getShardId()); client.mergeShards(mergeShardsRequest);

Der erste Schritt nach diesem Verfahren wird unter Warten Sie, bis ein Stream wieder aktiv wird veranschaulicht.