Mesclar dois estilhaços - Amazon Kinesis Data Streams

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Mesclar dois estilhaços

Uma operação de mesclagem de estilhaços usa dois estilhaços especificados e combina-os em um único estilhaço. Após a mesclagem, o único estilhaço filho recebe dados para todos os valores de chave de hash cobertos pelos dois estilhaços pais.

Adjacência de estilhaço

Para mesclar dois estilhaços, eles precisam estar adjacentes. Dois estilhaços são considerados adjacentes quando a união dos intervalos de chave de hash dos dois estilhaços forma um conjunto contíguo sem lacunas. Por exemplo, suponha que você tenha dois estilhaços, um com o intervalo de chaves de hash 276...381 e o outro com o intervalo de chaves de hash 382...454. Você pode mesclar esses dois estilhaços em um só, que teria um intervalo de chaves de hash 276...454.

Para usar outro exemplo, suponha que você tenha dois estilhaços, um com um intervalo de chaves de hash 276...381 e o outro com um intervalo de chaves de hash 455...560. Você não poderia mesclar esses dois estilhaços porque haveria um ou mais estilhaços entre eles que estariam no intervalo 382...454.

O conjunto de todosOPENOs estilhaços em um stream (como um grupo) sempre abrange o intervalo inteiro de valores de chave de hash MD5. Para obter mais informações sobre esses estados de estilhaço (como CLOSED), consulte Roteamento de dados, persistência de dados e estado do estilhaço após um reestilhaçamento.

Para identificar os estilhaços candidatos para mesclagem, você deve filtrar todos os estilhaços que estão no estado CLOSED. Estilhaços que sãoOPEN—isto é, nãoCLOSED—ter um número de sequência de términonull. Você pode testar o número sequencial de término de um estilhaço usando:

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

Após filtrar os estilhaços fechados, classifique os estilhaços restantes pelo valor de chave de hash mais alto aceito por cada estilhaço. Você pode recuperar esse valor usando:

shard.getHashKeyRange().getEndingHashKey();

Se dois estilhaços são adjacentes nessa lista filtrada e classificada, eles podem ser mesclados.

Código da operação de mesclagem

O código a seguir mescla dois estilhaços. O código pressupõe que myStreamName contém o nome do seu stream e as variáveis de objeto shard1 e shard2 contém os dois estilhaços adjacentes a mesclar.

Para a operação de mesclagem, comece instanciando um novo objeto mergeShardsRequest. Especifique o nome do stream com o método setStreamName. Em seguida, especifique os dois estilhaços a mesclar usando os métodos setShardToMerge e setAdjacentShardToMerge. Por fim, chame omergeShardsMétodo no cliente Kinesis Data Streams para executar a operação.

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

A primeira etapa após este procedimento é mostrada em Aguardar um stream ficar ativo novamente.