Documentation for a newer release is available. View Latest

Backpressure

En virtud de usar la librería Akka Streams, los connectors están construidos para ser reactivos, es decir, basados en demanda.

Esto significa que nos beneficiamos de backpressure y podemos manejar cargas pesadas sin una gran pérdida de rendimiento, o que los sistemas fallen debido al consumo excesivo de recursos (siempre que el sistema esté correctamente ajustado).

Akka Streams se compone de tres componentes principales que, juntos, forman un grafo ejecutable. Estos son sources, sinks y flows. Las sources son productores (emiten mensajes), los sinks son consumidores (reciben mensajes) y los flows son una combinación de ambos (transforman mensajes).

Los consumidores pueden señalar demanda de más mensajes, lo cual es beneficioso ya que de esta manera los consumidores no se ven inundados de mensajes. Usar backpressure de esta manera es más efectivo cuando los mensajes se escriben en algún almacenamiento intermedio de datos, por ejemplo un event store, base de datos, topic de Kafka o cola JMS, ya que de este modo los picos en la producción de mensajes no afectarán a los consumidores aguas abajo.

En algunas situaciones (por ejemplo, transports HTTP), el backpressure puede causar que las solicitudes sean rechazadas bajo carga pesada ya que los mensajes no tienen a dónde ir si los consumidores no pueden procesarlos lo suficientemente rápido. Aunque esta situación es la misma con o sin backpressure.