Development

Programación Reactiva Spring Boot – Parte 1

Publicado por
Felipe Choque
Programación Reactiva Spring Boot – Parte 1
Escrito por
Felipe Choque
Publicado en
April 9, 2024
Tiempo de lectura
Categoría
Development

Antes de empezar, responderemos qué es la programación reactiva y cuál es su propósito. La programación reactiva es un paradigma de programación y su objetivo principal es crear componentes que sean asíncronos y no bloqueantes. Una parte fundamental de este paradigma son los stream de datos los cuales representan un flujo constante de datos de los cuales se puede generar una respuesta inmediata, dependiendo de lo que se requiera hacer con este flujo de datos.

En esta publicación nos centraremos en la programación reactiva con Java SpringBoot y Spring WebFlux que es parte de spring 5 y se basa en el framework Project reactor para así dar soporte a la programación reactiva.

Diferencia entre programación reactiva y programación no reactiva

La principal diferencia radica en que la programación reactiva es no bloqueante y asíncrona, mientras que la programación no reactiva es bloqueante y síncrona. Esto quiere decir que, por ejemplo, cuando hacemos una simple Rest API como se hace normalmente, acá cuando se realiza una request el servidor crea un hilo que se encarga de realizar el trabajo, y mientras esto ocurre el hilo encargado de hacer esto queda bloqueado esperando a que la solicitud se resuelva para poder continuar, en el intertanto se pierde mucho tiempo esperando el resultado de dicha solicitud. Es aquí cuando entra la programación reactiva a resolver este problema.

•  Generalmente en programación no reactiva tenemos los siguiente:

programación no reactiva

Como se puede observar en la imagen arriba en el modelo clásico, el servidor crea un hilo por cada request que es enviada, esto ocasiona una serie de problemas ya que normalmente cada aplicación cuenta con un Nro. limitado de hilos que puede crear, y si esto se requiere aumentar implica un claro aumento de recursos lo cual lo hace poco escalable.

•  Ahora veamos el modelo para programación reactiva no bloqueante.

A diferencia del modelo anterior, donde se creaba un hilo por request y este quedaba bloqueado hasta tener respuesta, en la programación reactiva se cuenta con un “event loop” el cual tiene un hilo generalmente (puede haber más de uno, pero siempre una cantidad pequeña) el cual se encarga de ir procesando las solicitudes una a una, las cuales quedan con “registro callback”, que queda en una cola cuando este está listo para ser procesado. De esta forma el hilo del “event loop” sabe cuándo procesar las cada response.

Veamos el mismo modelo anterior ahora con programación reactiva:

programación reactiva

Como se puede observar, en este modelo no hay bloqueo de hilos como en el caso anterior, esto se debe principalmente que se maneja a través de eventos, entonces al generar una request esta es tomada como un evento, que toma el hilo del event loop y registra este evento con un callback para saber cuando el evento se completa. Esto logra que un único hilo pueda manejar muchas solicitudes a la vez, ya que no es necesario que el hilo espere a que la operación en la BD termine para poder tomar otra request.

attach icon
Adjuntar archivo
máximo: 10MB
Descarga el archivo haciendo click en el botón
Click aquí
¡Ups! Algo salió mal al enviar el formulario.

Crea tu propio manual de marca con esta plantilla gratuita.
¡Organiza tus activos de diseño de forma más eficiente!

Es
Eng