Utilice la refragmentación, el escalado y el procesamiento paralelo para cambiar la cantidad de fragmentos - 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.

Utilice la refragmentación, el escalado y el procesamiento paralelo para cambiar la cantidad de fragmentos

Los cambios en los fragmentos le permiten aumentar o reducir el número de fragmentos en una secuencia para adaptarse a los cambios en la velocidad del flujo de datos en la secuencia. Los cambios en los fragmentos los suele realizar una aplicación administrativa que monitorea las métricas de administración de datos en los fragmentos. Aunque KCL por sí solo no inicia las operaciones de refragmentación, está diseñado para adaptarse a los cambios en la cantidad de fragmentos que se producen como resultado de la refragmentación.

Como se indica enUtilice una tabla de arrendamientos para realizar un seguimiento de los fragmentos procesados por la aplicación de consumo KCL, KCL rastrea los fragmentos de la transmisión mediante una tabla de Amazon DynamoDB. Cuando se crean nuevos fragmentos como resultado de la refragmentación, KCL descubre los nuevos fragmentos y rellena las nuevas filas de la tabla. Los procesos de trabajo descubren automáticamente los nuevos fragmentos y crean procesadores para administrar los datos de los mismos. KCLTambién distribuye los fragmentos de la transmisión entre todos los procesadores de registros y trabajadores disponibles.

KCLEsto garantiza que todos los datos que existían en los fragmentos antes de la refragmentación se procesen primero. Después de que los datos se hayan procesado, los datos de los nuevos fragmentos se envían a los procesadores de registros. De esta forma, KCL conserva el orden en el que se agregaron los registros de datos a la secuencia para una clave de partición determinada.

Ejemplo: refragmentación, escalado y procesamiento paralelo

El siguiente ejemplo ilustra cómo KCL ayuda a gestionar el escalado y la refragmentación:

  • Por ejemplo, si la aplicación se ejecuta en una EC2 instancia y procesa una transmisión de datos de Kinesis que tiene cuatro fragmentos. Esta instancia tiene un servidor y KCL cuatro procesadores de registros (un procesador de registros por cada fragmento). Estos cuatro procesadores de registros se ejecutan en paralelo en el mismo proceso.

  • A continuación, si escala la aplicación para utilizar otra instancia, tendrá dos instancias procesando una secuencia con cuatro fragmentos. Cuando el KCL servidor arranca en la segunda instancia, equilibra la carga con la primera instancia, de modo que cada instancia procesa ahora dos fragmentos.

  • Si entonces decide dividir los cuatro fragmentos en cinco fragmentos. KCLDe nuevo, coordina el procesamiento entre las instancias: una instancia procesa tres fragmentos y la otra procesa dos fragmentos. Se produce una coordinación similar al fusionar fragmentos.

Por lo general, cuando utilice elKCL, debe asegurarse de que el número de instancias no supere el número de fragmentos (excepto para fines de espera en caso de fallo). Cada fragmento lo procesa exactamente un KCL trabajador y tiene exactamente un procesador de registros correspondiente, por lo que nunca necesitará varias instancias para procesar un fragmento. Sin embargo, un proceso de trabajo puede procesar cualquier número de fragmentos, por lo que no hay problema si el número de fragmentos supera el número de instancias.

Para aumentar el procesamiento de su aplicación, debe probar una combinación de estos enfoques:

  • Aumentar el tamaño de la instancia (porque todos los procesadores de registros se ejecutan en paralelo dentro de un proceso)

  • Al aumentar el número de instancias hasta el número máximo de fragmentos abiertos (porque los fragmentos se pueden procesar de manera independiente)

  • Al aumentar el número de fragmentos (lo que aumenta el nivel de paralelismo)

Tenga en cuenta que puede utilizar Auto Scaling para escalar automáticamente las instancias en función de las métricas adecuadas. Para obtener más información, consulte la Guía del usuario EC2 de Amazon Auto Scaling.

Cuando la refragmentación aumenta el número de fragmentos de la transmisión, el aumento correspondiente en el número de procesadores de registros aumenta la carga de las EC2 instancias que los alojan. Si las instancias forman parte de un grupo de Auto Scaling y la carga aumenta lo suficiente, el grupo de Auto Scaling añade más instancias para administrar el aumento de la carga. Debe configurar las instancias para lanzar su aplicación de Amazon Kinesis Data Streams en el inicio, de forma que los procesos de trabajo y los procesadores de registros adicionales se activen en la nueva instancia de inmediato.

Para obtener más información acerca de los cambios en los fragmentos, consulte Vuelva a compartir una transmisión.