Back to Blog
ArtículoFebruary 8, 20224 min

Cómo manejar la presión de datos en sistemas basados en mensajes

Cómo manejar la presión de datos en soluciones impulsadas por mensajes ininterrumpidos y garantizar un tiempo de actividad continuo bajo carga.

Cómo manejar la presión de datos en sistemas basados en mensajes

¿Qué es la presión de datos?

Se habla mucho sobre la presión de datos cuando se trata de sistemas ininterrumpidos. ¿Qué es y por qué es tan importante?

La presión, en el sentido físico, describe un desequilibrio entre gas o fluido entre dos compartimentos confinados. Se mueve en ambas direcciones hasta que se alcanza un equilibrio. Si deseas gestionarla, generalmente colocas una válvula entre los dos.

En los sistemas de procesamiento de datos, la presión de datos, o presión ascendente, describe la cantidad de datos que están listos para ser procesados. Para soluciones basadas en archivos (por lotes), esto simplemente describe la cantidad de archivos que están esperando ser procesados (de manera asíncrona). La velocidad de procesamiento se basa puramente en la capacidad de procesamiento de los actores descendentes y está basada en la demanda. La presión de datos en el procesamiento por lotes generalmente no representa una amenaza de sobrecarga del sistema porque es implícita. El sistema de procesamiento por lotes siempre procesará solo lo que pueda manejar.

Sin embargo, es una historia muy diferente en los entornos modernos de procesamiento en tiempo real basados en mensajes, donde la presión de datos es explícita porque los datos necesitan ser procesados a medida que llegan.

Importancia de back-pressure en sistemas ininterrumpidos en tiempo real

Los casos de uso basados en mensajes generalmente requieren que los datos se manejen en tiempo real, en todo momento. Por lo tanto, los sistemas deben ser capaces de escalar elásticamente para manejar picos de carga o liberar recursos innecesarios durante ventanas de baja presión de datos.

Existen innumerables ejemplos de arquitecturas que se bloquean al manejar grandes cargas de datos. Esto a menudo resulta en un círculo vicioso que típicamente lleva al colapso de dicha arquitectura. El principal dilema es la falta de una señal de demanda negativa (o una señal de alta back-pressure de datos) hacia los actores ascendentes, sobre la cual puedan reaccionar. Si existiera tal señal, se podrían tomar medidas apropiadas.

Dichas acciones podrían ser:

  • reducir la velocidad de procesamiento en general en el flujo de datos, o
  • generar más capacidad de procesamiento para manejar la presión adicional.

Una vez que disminuye la presión de datos ascendente, las contramedidas pueden revertirse. Se puede entregar más datos nuevamente, o se puede desactivar la capacidad de procesamiento previamente activada.

En resumen, tenemos:

  1. una señal de datos o presión ascendente que indica que hay datos disponibles para ser procesados, y tenemos
  2. una señal de demanda o back-pressure que indica cuán cargados están los actores descendentes y si la presión de los actores ascendentes puede ser aliviada hacia los actores descendentes.

Usando estas señales, el sistema es capaz de negociar un equilibrio entre todos los participantes, lo que asegura que el procesamiento nunca se detenga, sino que más bien se desacelere (o se disponga automáticamente de capacidad adicional). Este problema está bien reconocido y definido en el Reactive Manifesto, que requiere que los sistemas sean basados en mensajes, elásticos y resilientes, y por lo tanto, receptivos a la carga. Los sistemas que cumplen con estos requisitos se denominan "Reactivos".

Cómo lo maneja layline.io

Parece que la solución al desafío de back-pressure es simple. Pero en realidad es difícil de resolver, ya que todos los participantes en esta danza necesitan ser conscientes de la presión de datos, en ambas direcciones. La gestión de flujos reactivos ha resuelto este problema, por lo que layline.io lo aprovecha al máximo en su núcleo. Sin embargo, no es para los débiles de corazón y viene con una curva de aprendizaje y experiencia pronunciada. layline.io protege a sus usuarios de esta complejidad en una plataforma fácil de usar, que proporciona todas las características necesarias para la producción, como configurabilidad de bajo código impulsada por interfaz gráfica, implementación con un solo clic, monitoreo y mucho más.

Recursos

Share:

Enjoyed this article?

Subscribe to get more insights delivered to your inbox.