繁体   English   中英

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 是一个完全非阻塞的堆栈。

  1. 请告诉我,这是什么意思?
  2. 来到 Spring MVC 的请求激活一个线程来执行这个请求。 何时以及为何被封锁?
  3. 为什么 Spring WebFlux 不阻塞线程?
  1. Spring Web MVC 使用单个线程来处理对 API 的每个请求。 Spring Webflux 不会阻塞线程来处理每个请求,因为没有线程一直在等待完成某些事情(例如等待来自数据库的回答)。
  2. 如 1. 中所写,它可以在等待来自数据库或通过 HTTP 调用的另一个服务的答案时被阻止。
  3. Spring Webflux 利用了完全无阻塞的反应式堆栈(查看https://projectreactor.io/ )。 这意味着没有线程被阻塞等待某事发生。 一切都基于响应式流发布者( MonoFlux )使您的代码对可用的数据(来自数据库或通过 HTTP 调用的另一个服务作为示例)进行响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM