Procesamiento de baja latencia para orígenes de eventos de Kafka
AWS Lambda admite de forma nativa el procesamiento de eventos de baja latencia para aplicaciones que requieren latencias constantes de extremo a extremo de menos de 100 milisegundos. Esta página brinda detalles de configuración y recomendaciones para habilitar los flujos de trabajo de baja latencia.
Habilitación del procesamiento de baja latencia
Para habilitar el procesamiento de baja latencia en una asignación de orígenes de eventos de Kafka, se requiere la siguiente configuración básica:
-
Habilite el modo aprovisionado. Para obtener más información, consulte Configuración del modo aprovisionado.
-
Establezca el parámetro
MaximumBatchingWindowInSeconds
de la asignación de orígenes de eventos en 0. Para obtener más información, consulte Comportamiento de procesamiento por lotes.
Ajuste de su ESM de Kafka de baja latencia
Tenga en cuenta las siguientes recomendaciones para optimizar su asignación de orígenes de eventos de Kafka para lograr una baja latencia:
Configuración del modo aprovisionado
En el modo aprovisionado para la asignación de orígenes de eventos de Kafka, Lambda permite afinar el rendimiento de la asignación de orígenes de eventos al configurar una cantidad mínima y máxima de recursos llamados sondeos de eventos. Un sondeo de eventos (o un sondeo) representa un recurso informático que sustenta una asignación de orígenes de eventos en el modo aprovisionado y asigna un rendimiento de hasta 5 MB/s. Cada sondeo de eventos admite hasta 5 invocaciones de Lambda simultáneas.
Para determinar la configuración de sondeo óptima para su aplicación, tenga en cuenta la tasa máxima de ingesta y los requisitos de procesamiento. Veamos un ejemplo simplificado:
Con un tamaño de lote de 20 registros y una duración media de la función de destino de 50 ms, cada sondeo puede procesar 2000 registros por segundo con un límite de 5 MB/s. Esto se calcula como: (20 registros × 1000 ms / 50 ms) × 5 invocaciones de Lambda simultáneas. Por lo tanto, si la tasa máxima de ingesta deseada es de 20 000 registros por segundo, necesitará al menos 10 sondeos de eventos.
nota
Recomendamos disponer de sondeos de eventos adicionales como búfer para evitar que operen de forma constante a su máxima capacidad.
El modo aprovisionado escala automáticamente los sondeos de eventos en función de los patrones de tráfico dentro de los sondeos de eventos mínimos y máximos configurados, lo que puede provocar un reequilibrio y, por lo tanto, presentar una latencia adicional. Puede deshabilitar el escalado automático al configurar el mismo valor para el sondeo de eventos mínimo y máximo.
Consideraciones adicionales
Algunas de las consideraciones adicionales incluyen:
Los arranques en frío a partir de la invocación de la función de destino de Lambda pueden aumentar la latencia de extremo a extremo. Para reducir este riesgo, considere habilitar la simultaneidad aprovisionada o SnapStart en la función de destino de la asignación de orígenes de eventos. Además, optimice la asignación de memoria de su función para garantizar ejecuciones uniformes y óptimas.
-
Cuando
MaximumBatchingWindowInSeconds
se establece en 0, Lambda procesará inmediatamente todos los registros disponibles sin esperar a llenar el tamaño del lote por completo. Por ejemplo, si el tamaño del lote está establecido en 1000 registros pero solo hay 100 registros disponibles, Lambda procesará esos 100 registros inmediatamente en lugar de esperar a que se acumulen los 1000 registros completos.
importante
La configuración óptima para el procesamiento de baja latencia varía considerablemente en función de la carga de trabajo específica. Recomendamos encarecidamente probar diferentes configuraciones con su carga de trabajo real para determinar la mejor configuración para su caso de uso.