Logre la preparación de producción para aplicaciones de Managed Service para Apache Flink - Managed Service para Apache Flink

Amazon Managed Service para Apache Flink Amazon (Amazon MSF) se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.

Logre la preparación de producción para aplicaciones de Managed Service para Apache Flink

Esta es una recopilación de aspectos importantes de la ejecución de aplicaciones de producción en Managed Service para Apache Flink. No se trata de una lista exhaustiva, sino de lo mínimo a lo que hay que prestar atención antes de poner una aplicación en producción.

Pruebas de carga de sus aplicaciones

Algunos problemas de las aplicaciones solo se manifiestan cuando hay mucha carga. Hemos visto casos en los que las aplicaciones parecían estar en buen estado, pero un incidente operativo incrementó considerablemente la carga de trabajo de la aplicación. Esto puede ocurrir de forma totalmente independiente de la propia aplicación. Si el origen de datos o el receptor de datos no están disponibles durante un par de horas, la aplicación Flink no podrá avanzar. Cuando se soluciona el problema, hay una acumulación de datos sin procesar que puede agotar por completo los recursos disponibles. La carga puede entonces amplificar errores o problemas de rendimiento que no surgieron antes.

Por lo tanto, es esencial realizar las pruebas de carga adecuadas para las aplicaciones de producción. Las preguntas que deben responderse durante esas pruebas de carga incluyen:

  • ¿La aplicación es estable bajo una carga elevada sostenida?

  • ¿Se puede la aplicación seguir ocupando un punto de almacenamiento en momentos de máxima carga?

  • ¿Cuánto tiempo demora procesar un acumulado de 1 hora? ¿Y cuánto tiempo demora para 24 horas (en función de la retención máxima de los datos en la transmisión)?

  • ¿Aumenta el rendimiento de la aplicación cuando se escala la aplicación?

Cuando se consume desde un flujo de datos, estos escenarios se pueden simular produciendo en el flujo durante algún tiempo. Luego, se inicia la aplicación y se hace que consuma datos desde el principio del tiempo. Por ejemplo, utilice una posición de inicio de TRIM_HORIZON en el caso de un flujo de datos de Kinesis.

Definición de paralelismo máximo

El paralelismo máximo define el paralelismo máximo al que se puede escalar una aplicación con estado. Esto se define cuando se crea el estado por primera vez, y no hay forma de escalar el operador más allá de este máximo sin descartar el estado.

El paralelismo máximo se establece cuando se crea el estado por primera vez.

De forma predeterminada, el paralelismo máximo está definido como:

  • 128, si el paralelismo <= 128

  • MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15): si el paralelismo > 128

Si planea escalar su aplicación a un paralelismo superior a 128 grados, debe definir explícitamente el paralelismo máximo.

El paralelismo máximo se puede definir en la aplicación, con env.setMaxParallelism(x) o con un solo operador. A menos que se especifique lo contrario, todos los operadores heredan el paralelismo máximo de la aplicación.

Para obtener más información, consulte Setting the Maximum Parallelism en la documentación de Flink.

Establecimiento de un UUID para todos los operadores

Se utiliza un UUID en la operación en la que Flink asigna un punto de almacenamiento a un operador individual. Si se establece un UUID específico para cada operador, se obtiene un mapeo estable para el proceso de restauración del punto de almacenamiento.

.map(...).uid("my-map-function")

Para obtener más información, consulte Production Readiness Checklist.