Desenvolver produtores usando a Amazon Kinesis Producer Library (KPL) - 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á.

Desenvolver produtores usando a Amazon Kinesis Producer Library (KPL)

Um produtor do Amazon Kinesis Data Streams é uma aplicação que coloca registros de dados de usuários em um fluxo de dados do Kinesis (o que também é chamado de ingestão de dados). A Kinesis Producer Library (KPL) simplifica o desenvolvimento de aplicações de produção permitindo que os desenvolvedores atinjam alta throughput de gravação para um fluxo de dados do Kinesis.

É possível monitorar a KPL com o Amazon CloudWatch. Para obter mais informações, consulte Monitore a Kinesis Producer Library com a Amazon CloudWatch.

nota

Recomendamos a atualização para a versão mais recente da KPL. A KPL é atualizada regularmente em versões que incluem os patches de dependência e segurança e as correções de bugs mais recentes, além de novos recursos compatíveis com versões anteriores. Para obter mais informações, acesse https://github.com/awslabs/amazon-kinesis-producer/releases/.

Analisar a função da KPL

A KPL é uma biblioteca fácil de usar e altamente configurável que ajuda a gravar em um fluxo de dados do Kinesis. Ela atua como um intermediário entre o código da aplicação de produção e as ações das APIs do Kinesis Data Streams. A KPL executa as seguintes tarefas principais:

  • Grava em um ou mais fluxos de dados do Kinesis com um mecanismo automático e configurável de novas tentativas

  • Coleta registros e usa PutRecords para gravar vários registros em vários fragmentos por solicitação

  • Agrega registros de usuário para aumentar o tamanho da carga útil e melhorar a throughput

  • Integra-se perfeitamente à Kinesis Client Library (KCL) para desagregar registros em lote no consumidor

  • Envia métricas do Amazon CloudWatch em seu nome para proporcionar visibilidade da performance do produtor

Observe que a KPL é diferente da API do Kinesis Data Streams que está disponível nos SDKs da AWS. A API do Kinesis Data Streams ajuda a gerenciar vários aspectos do Kinesis Data Streams (incluindo a criação de fluxos, a refragmentação e a colocação e obtenção de registros), enquanto a KPL fornece uma camada de abstração especificamente para a ingestão de dados. Para obter informações sobre a API do Kinesis Data Streams, consulte a Referência de APIs do Amazon Kinesis.

Perceber as vantagens de usar a KPL

A lista a seguir apresenta algumas das principais vantagens no uso da KPL para desenvolver produtores do Kinesis Data Streams.

A KPL pode ser usada em casos de uso síncronos ou assíncronos. Recomenda-se a interface assíncrona, que possui maior desempenho, a menos que haja um motivo específico para usar o comportamento síncrono. Para obter mais informações sobre esses dois casos de uso e o código de exemplo, consulte Gravar no fluxo de dados do Kinesis usando a KPL.

Benefícios de desempenho

A KPL pode ajudar a criar produtores de alta performance. Considere uma situação em que suas instâncias do Amazon EC2 atuam como proxy para coletar eventos de 100 bytes de centenas ou milhares de dispositivos de baixa potência e gravar registros em um fluxo de dados do Kinesis. Cada instância do EC2 precisa gravar milhares de eventos por segundo no fluxo de dados. Para alcançar a throughput necessária, os produtores precisam implementar uma lógica complexa, como agrupamento em lotes ou multithreading, lógica de retentativa e desagregação de registros no lado do consumidor. A KPL executa todas essas tarefas.

Facilidade de uso do lado do consumidor

No caso de desenvolvedores no lado do consumidor usando a KCL em Java, a integração da KPL não requer esforço adicional. Ao recuperar um registro agregado do Kinesis Data Streams que consiste em vários registros de usuário da KPL, a KCL chama automaticamente a KPL para extrair registros do usuário individual e retorná-los ao mesmo usuário.

Desenvolvedores no lado do conusmidor que não usam a KCL, mas usam a operação GetRecords da API diretamente, contam com uma biblioteca de Java da KPL disponível para extrair registros do usuário individual e retorná-los ao mesmo usuário.

Monitoramento de produtor

É possível coletar, monitorar e analisar os produtores do Kinesis Data Streams usando o Amazon CloudWatch e a KPL. A KPL emite métricas de throughput, de erro e outras para o CloudWatch em seu nome e pode ser configurada para monitorar no nível de fluxo, fragmento ou produtor.

Arquitetura assíncrona

Como pode armazenar registros em buffer antes de enviá-los ao Kinesis Data Streams, a KPL não força a aplicação fazendo a chamada a bloquear e aguardar uma confirmação de que o registro chegou no servidor antes de continuar a execução. Uma chamada para colocar um registro na KPL sempre retorna imediatamente, sem esperar o registro ser enviado ou uma resposta ser recebida do servidor. Em vez disso, é criado um objeto Future que posteriormente recebe o resultado do envio do registro ao Kinesis Data Streams. Esse é o mesmo comportamento dos clientes assíncronos no AWS SDK.

Entender quando não usar a KPL

A KPL pode ter um atraso por processamento adicional de até RecordMaxBufferedTime dentro da biblioteca (configurável pelo usuário). Valores maiores que RecordMaxBufferedTime geram maiores eficiências de empacotamento e melhor desempenho. Aplicações que não toleram esse atraso adicional podem precisar usar o AWS SDK diretamente. Para obter mais informações sobre como usar o AWS SDK com o Kinesis Data Streams, consulte Desenvolver produtores usando a API do Amazon Kinesis Data Streams com o AWS SDK for Java. Para obter mais informações sobre RecordMaxBufferedTime e outras propriedades configuráveis pelo usuário da KPL, consulte Configurar a Kinesis Producer Library.