Evitar la pérdida de datos cuando los consumidores lentos fuerzan la contrapresión en el procesamiento del flujo (chispa, aws)

Soy nuevo en el procesamiento de flujo distribuido (Spark). He leído algunos tutoriales / ejemplos que cubren cómo los resultados de la contrapresión en la desaceleración del productor (s) en respuesta a los consumidores sobrecargados. El ejemplo clásico dado es ingerir y analizar tweets. Cuando hay un pico inesperado en el tráfico de tal manera que los consumidores no pueden manejar la carga, aplican contrapresión y el productor responde ajustando su tasa más baja.

Lo que realmente no veo cubierto es ¿qué enfoques se utilizan en la práctica para lidiar con la gran cantidad de datos entrantes en tiempo real que no se pueden procesar de inmediato debido a la menor capacidad de toda la tubería?

Me imagino que la respuesta a esto depende del dominio comercial. Para algunos problemas, podría estar bien dejar caer esos datos, pero en esta pregunta me gustaría centrarme en un caso en el que no queremos perder ningún dato.

Como trabajaré en un entorno de AWS, mi primer pensamiento sería "almacenar" el exceso de datos en una cola SQS o una secuencia de Kinesis. ¿Es tan simple como esto en la práctica o existe una solución de transmisión más estándar para este problema (quizás como parte de Spark)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta