首页 > 解决方案 > SpringDoc WebMvc 与 WebFlux

问题描述

我将 SpringDoc Open Api 3 用于我的其余 API。现在我正在使用 WebMvc 版本。切换到 WebFlux 版本有什么好处吗?除了异步会发生在客户端之外,在客户端使用 WebClient (或其他一些异步客户端)不会是一回事吗?归根结底,Rest 方法可以在内部使用异步方法,但尝试看看是否值得将公开的方法迁移到 WebFlux。

标签: javaspringspringdoc

解决方案


不,这是完全不同的事情。Spring MVC 在每个请求线程模型中运行。您有 100 个并发请求 = 您有 100 个线程来处理这些请求。100 个线程已经很多了,现在想象一下 1k、10k 甚至 100k - 在这个模型中完全不可能。

关键是这些线程没有在 100% 的时间内完成工作。如果您调用数据库或其他服务,那么线程只是在等待响应,而不是在做它可能在那个时候做的工作。

这就是 Webflux 的方式,你使用更少的线程,因为不是等待来自外部服务的响应,而是线程在这段时间内工作,从而可以毫无问题地处理 1k 个并发请求。

那么为什么每个人都不这样做:使用更少的资源,更好的性能等?首先,我认为最重要的是——这很难做到。程序流程不像同步编程那么容易,调试真的很困难,堆栈跟踪变得基本无用,你需要非常小心,不要阻塞一切。其次 - 好处在某个门槛上变得有价值,大多数应用程序不需要处理成千上万的并发用户。在这个门槛之前,不仅没有任何好处,而且在性能方面可能会更差,同时付出了第一点提到的开发人员知识和经验的代价。三 - 为此,您需要整个流程是异步的,


推荐阅读