Decida uma estratégia para refragmentar - 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á.

Decida uma estratégia para refragmentar

A finalidade da refragmentação no Amazon Kinesis Data Streams é permitir que o fluxo se adapte a alterações na taxa do fluxo de dados. Você divide estilhaços para aumentar a capacidade (e o custo) do seu stream. Você mescla estilhaços para reduzir o custo (e a capacidade) do seu stream.

Uma abordagem de refragmentação pode ser dividir cada fragmento do fluxo, o que dobraria sua capacidade. No entanto, isso pode fornecer mais capacidade adicional do que você realmente precisa e, portanto, gerar um custo desnecessário.

Você também pode usar métricas para identificar os fragmentos quentes ou frios, ou seja, os fragmentos que estão recebendo muito mais ou muito menos dados do que o esperado. Em seguida, você pode seletivamente dividir os estilhaços quentes para aumentar a capacidade das chaves de hash que almejam esses estilhaços. Comparativamente, você pode mesclar os estilhaços frios para dar uma melhor serventia à capacidade não usada.

Você pode obter alguns dados de desempenho do seu stream a partir das CloudWatch métricas da Amazon que o Kinesis Data Streams publica. No entanto, você mesmo também pode coletar algumas métricas dos seus streams. Uma abordagem é registrar em log os valores de chave de hash gerados pelas chaves de partição dos seus registros de dados. Lembre-se de que você especifica a chave de partição no momento em que adiciona o registro ao stream.

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

O Kinesis Data MD5Streams usa para calcular a chave de hash a partir da chave de partição. Como você especifica a chave de partição para o registro, você pode MD5 usá-la para calcular o valor da chave de hash desse registro e registrá-lo.

Você também pode registrar os IDs fragmentos aos quais seus registros de dados estão atribuídos. O ID do estilhaço é obtido usando-se o método getShardId do objeto putRecordResults retornado pelo método putRecords e o objeto putRecordResult retornado pelo método putRecord.

String shardId = putRecordResult.getShardId();

Com os valores do fragmento IDs e da chave de hash, você pode determinar quais fragmentos e chaves de hash estão recebendo mais ou menos tráfego. Em seguida, você pode usar o reestilhaçamento para fornecer mais ou menos capacidade, conforme apropriado para essas chaves.