Desarrollo de productores con Amazon Kinesis Producer Library - Amazon Kinesis Data Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Desarrollo de productores con Amazon Kinesis Producer Library

Un productor de Amazon Kinesis Data Streams es una aplicación que coloca los registros de datos de usuario en un flujo de datos de Kinesis Data Streams (también denominado ingesta de datos). Kinesis Producer Library (KPL) simplifica el desarrollo de aplicaciones productoras y permite a los desarrolladores alcanzar un mayor rendimiento de escritura en un flujo de datos de Kinesis Data Streams.

Puedes monitorizar la KPL con Amazon CloudWatch. Para obtener más información, consulte Supervisión de Kinesis Producer Library con Amazon CloudWatch.

nota

Se recomienda actualizar a la versión más reciente de KPL. KPL se actualiza periódicamente con versiones más recientes que incluyen los últimos parches de dependencia y seguridad, correcciones de errores y nuevas características compatibles con versiones anteriores. Para obtener más información, consulte https://github.com/awslabs/ amazon-kinesis-producer /releases/.

Función de KPL

La KPL es una easy-to-use biblioteca altamente configurable que le ayuda a escribir en una transmisión de datos de Kinesis. Ejerce de intermediaria entre el código de la aplicación de productor y las acciones de la API de Kinesis Data Streams. KPL realiza las siguientes tareas principales:

  • Escribe en uno o varios flujo de datos de Kinesis con un mecanismo de reintento automático y configurable

  • Recopila registros y utiliza PutRecords para escribir varios registros en varios fragmentos por solicitud

  • Acumula registros de usuario para aumentar el tamaño de la carga y mejorar el rendimiento

  • Se integra perfectamente con Kinesis Client Library (KCL) para desagrupar registros en lotes en el consumidor

  • Envía las CloudWatch estadísticas de Amazon en tu nombre para proporcionar visibilidad sobre el rendimiento del productor

Tenga en cuenta que KPL es diferente de la API de Kinesis Data Streams que está disponible en los SDK deAWS. La API de Kinesis Data Streams ayuda a administrar muchos aspectos de Kinesis Data Streams (como la creación de flujos, el cambio de las particiones de registros, así como la inserción y obtención de estos), mientras que KPL proporciona una capa de abstracción específica para la ingesta de datos. Para obtener información sobre la API de Kinesis Data Streams, consulte Referencia de la API de Amazon Kinesis.

Ventajas del uso de KPL

La siguiente lista representa algunas de las ventajas más importantes de utilizar KPL para el desarrollo de productores de Kinesis Data Streams.

KPL puede utilizarse en casos de uso síncronos o asíncronos. Se recomienda utilizar el mayor rendimiento de la interfaz asíncrona a menos que haya una razón específica para utilizar un comportamiento síncrono. Para obtener más información sobre estos dos casos de uso y ver código de muestra, consulte Escritura en los flujos de datos de Kinesis mediante KPL.

Beneficios de rendimiento

KPL puede ayudar a crear productores de alto rendimiento. Piense en una situación en la que las instancias de Amazon EC2 sirven como un proxy para recopilar eventos de 100 bytes de cientos o miles de dispositivos de baja potencia y para escribir registros en un flujo de datos de Kinesis. Cada una de estas instancias EC2 debe escribir miles de eventos por segundo en la secuencia de datos. Para conseguir el nivel de rendimiento necesario, los productores deben implementar lógica complicada como, por ejemplo, la creación de lotes o la ejecución de subprocesos, además de lógica de reintento y desagrupación de registros en el lado del consumidor. KPL realiza todas estas tareas.

Facilidad de uso en el lado del consumidor

En el caso de los desarrolladores del lado del consumidor que usan KCL en Java, KPL se integra sin mayor esfuerzo. Cuando KCL recupera un registro agregado de Kinesis Data Streams que consta de varios registros de usuario de KPL, llama automáticamente a KPL para que extraiga los registro de usuario individuales antes de devolverlos al usuario.

Para los desarrolladores del lado del consumidor que no utilicen KCL, sino que, en su lugar, utilicen la operación de la API GetRecords directamente, hay disponible una biblioteca de Java de KPL que pueden usar para extraer los registros de los usuarios individuales antes de devolverlos al usuario.

Monitoreo del productor

Puede recopilar, supervisar y analizar a sus productores de Kinesis Data Streams mediante CloudWatch Amazon y la KPL. El KPL emite el rendimiento, los errores y otras métricas CloudWatch en su nombre, y se puede configurar para supervisarlo a nivel de transmisión, fragmento o productor.

Arquitectura asíncrona

Debido a que KPL puede almacenar en búfer los registros antes de enviarlos a Kinesis Data Streams, en la aplicación intermediaria no se fuerza el bloqueo y la espera a la confirmación de que el registro ha llegado al servidor antes de continuar con la ejecución. Una llamada para insertar un registro en KPL siempre vuelve inmediatamente, y no se espera a que el registro se envíe o a que se reciba una respuesta desde el servidor. En su lugar, se crea un objeto Future que recibe el resultado de enviar el registro a Kinesis Data Streams en un momento posterior. Este comportamiento es el mismo que el de los clientes asíncronos del SDK. AWS

Cuándo no utilizar KPL

KPL puede ocasionar un retraso adicional en el procesamiento de hasta RecordMaxBufferedTime en la biblioteca (configurable por el usuario). Los valores más altos de RecordMaxBufferedTime ofrecen un mayor eficacia de empaquetamiento y un mejor rendimiento. Es posible que las aplicaciones que no pueden tolerar este retraso tengan que utilizar el SDK de AWS directamente. Para obtener más información sobre el uso del AWS SDK con Kinesis Data Streams, Desarrollo de productores mediante la API de Amazon Kinesis Data Streams con AWS SDK for Java consulte. Para más información sobre RecordMaxBufferedTime y otras propiedades configurables por el usuario de KPL, consulte Configuración de Kinesis Producer Library.