He creado el siguiente diagrama. Simplemente no puedo entender cómo los hilos no están bloqueados en el caso de Spring Webflux/Project Reactor.
En la imagen a continuación, la solicitud llegó a mi servidor Netty y uno de los subprocesos (reactor-http-nio-1) se asignó a la solicitud, pasó el flujo y luego estuvo disponible para el próximo trabajo.
Después de algún tiempo, llegó la respuesta y se asignó a Thread2 (reactor-http-nio-2). Se devolvió al cliente.
Pero tiene que haber algo, correcto, que debería esperar la respuesta (o estar en estado de bloqueo), o algo que se activa cuando se recibe la respuesta y sabe que tiene que asignar un hilo a la respuesta y luego el hilo devuelve la respuesta. a su respectivo cliente que hizo esa solicitud, para evitar la intercalación.
¿Tengo entendido que el bloqueo todavía está involucrado, pero acabamos de descargar el proceso de bloqueo a algún otro subproceso (quizás interno). ¿O el sistema tiene la capacidad suficiente para entrar en estado inactivo después de pasar la solicitud y volver a activarse solo cuando llega la respuesta? Si este es el caso, ¿cómo funciona este mecanismo?
Esta pregunta puede ser demasiado amplia, pero algún recurso o explicación será realmente útil para la aclaración.