webflux tutorial reactivo reactiva programacion example ejemplo java spring spring-mvc spring-webflux

java - tutorial - webflux ejemplo



Spring MVC(async) vs Spring WebFlux (1)

El modelo asíncrono de Servlet introduce un límite asíncrono entre los subprocesos de contenedor (1 solicitud de Servlet / modelo de subproceso) y el procesamiento de la solicitud en su aplicación. El procesamiento puede ocurrir en un hilo diferente o esperar. Al final, debe enviarse de vuelta a un subproceso de contenedor y leer / escribir de forma bloqueada ( InputStream y OutputStream son inherentemente bloqueando las API).

Con ese modelo, necesita muchos subprocesos para lograr la concurrencia (porque muchos de ellos pueden bloquearse esperando la E / S). Esto cuesta recursos y puede ser una compensación, dependiendo de su caso de uso.

Con el código no bloqueante, solo necesita unos pocos subprocesos para procesar muchas solicitudes al mismo tiempo. Este es un modelo de concurrencia diferente; Como cualquier modelo, hay beneficios y compensaciones que vienen con él.

Para obtener más información sobre esa comparación, esta conversación de Servlet contra pilas reactivas debería ser de interés.

Estoy tratando de entender Spring WebFlux. Las cosas que he encontrado hasta ahora son reactivas en el núcleo, no hay API de Servlet, no hay subprocesos por solicitud, HTTP 2, impulsos del servidor, aplicación / flujo + json.

Pero, ¿cuál es la diferencia entre las llamadas asíncronas en Spring MVC? Me refiero a Spring MVC cuando devuelve Future, DefferedResult y etc. Obtiene lógica en el controlador de solicitudes (método del controlador) ejecutado en un subproceso separado, por lo que también puede beneficiarse del ahorro de recursos de agrupación de subprocesos para enviar solicitudes.

Entonces, ¿podría por favor resaltar las diferencias relacionadas con eso? ¿Por qué WebFlux es mejor aquí?

¡Muchas gracias por tu tiempo!