Spring Web MVC 与 Spring WebFlux。阻塞和非阻塞
Spring Web MVC vs Spring WebFlux. Blocking and Non-blocking
我是 Spring 的新人,我正在读一本书“Pro Spring boot 2”。它在这里说 Spring Web MVC 对每个请求都有一些阻塞,而 Spring Webflux 是一个完全非阻塞的堆栈。
- 请告诉我,这是什么意思?
- 到达Spring的请求MVC激活一个线程来执行这个请求。何时以及为何被阻止?
- 为什么 Spring WebFlux 不阻塞线程?
- Spring Web MVC 使用单个线程来处理对 API 的每个请求。 SpringWebflux 不会阻塞线程来处理每个请求,因为没有线程会一直等待完成某些事情(例如,等待数据库的答复)。
- 如 1. 中所写,它可以在等待来自数据库或来自通过 HTTP 调用的其他服务的应答时被阻止。
- Spring Webflux 利用反应堆栈(查看 https://projectreactor.io/) which is fully non-blocking. This means that no thread is blocked waiting for something to happen. Everything is based on reactive streams publishers (Mono and Flux)使您的代码对可用数据做出反应(例如来自数据库或通过 HTTP 调用的其他服务) .
我是 Spring 的新人,我正在读一本书“Pro Spring boot 2”。它在这里说 Spring Web MVC 对每个请求都有一些阻塞,而 Spring Webflux 是一个完全非阻塞的堆栈。
- 请告诉我,这是什么意思?
- 到达Spring的请求MVC激活一个线程来执行这个请求。何时以及为何被阻止?
- 为什么 Spring WebFlux 不阻塞线程?
- Spring Web MVC 使用单个线程来处理对 API 的每个请求。 SpringWebflux 不会阻塞线程来处理每个请求,因为没有线程会一直等待完成某些事情(例如,等待数据库的答复)。
- 如 1. 中所写,它可以在等待来自数据库或来自通过 HTTP 调用的其他服务的应答时被阻止。
- Spring Webflux 利用反应堆栈(查看 https://projectreactor.io/) which is fully non-blocking. This means that no thread is blocked waiting for something to happen. Everything is based on reactive streams publishers (Mono and Flux)使您的代码对可用数据做出反应(例如来自数据库或通过 HTTP 调用的其他服务) .