Processamento de baixa latência - 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á.

Processamento de baixa latência

Atraso de propagaçãoé definido como oend-to-endA partir do momento em que um registro é gravado no stream até ser lido por um aplicativo de consumidor. Esse atraso varia dependendo de uma série de fatores, mas é afetado principalmente pelo intervalo de sondagem de aplicativos de consumidor.

Para a maioria dos aplicativos, recomendamos a sondagem de cada estilhaço uma vez por segundo por aplicativo. Isso permite que você tenha vários aplicativos de consumidor processando um stream simultaneamente sem atingir os limites do Amazon Kinesis Data Streams de 5GetRecordsChamadas por segundo. Além disso, o processamento de lotes de dados maiores tende a ser mais eficiente na redução da latência de rede e outras latências de downstream no seu aplicativo.

Os padrões da KCL estão definidos para seguir a melhor prática de sondagem a cada 1 segundo. Esse padrão gera atrasos de propagação médios que costumam ser menores que 1 segundo.

Os registros do Kinesis Data Streams ficam disponíveis para serem lidos imediatamente após serem gravados. Há alguns casos de uso que precisam aproveitar isso e exigir o consumo de dados do stream assim que ele estiver disponível. Você pode reduzir significativamente o atraso de propagação sobrepondo as configurações padrão do KCL para sondar com mais frequência, como mostrado nos exemplos a seguir.

Código de configuração Java KCL:

kinesisClientLibConfiguration = new KinesisClientLibConfiguration(applicationName, streamName, credentialsProvider, workerId).withInitialPositionInStream(initialPositionInStream).withIdleTimeBetweenReadsInMillis(250);

Configuração de arquivo de propriedades para Python e Ruby KCL:

idleTimeBetweenReadsInMillis = 250
nota

Porque o Kinesis Data Streams tem um limite de 5GetRecordsChamadas por segundo, por estilhaço, definindo aidleTimeBetweenReadsInMillispropriedade inferior a 200ms pode resultar na sua aplicação observando oProvisionedThroughputExceededExceptionExceção. Muitas dessas exceções podem gerar recuos exponenciais significativos e, portanto, causar latências inesperadas significativas no processamento. Se você definir essa propriedade em 200 ms ou acima e tiver mais de um aplicativo de processamento, ocorrerá limitação semelhante.