我在rest中使用SpringDoc Open 3。现在我正在使用WebMvc版本。切换到WebFlux版本有什么好处吗?在客户端使用WebClient (或其他异步客户端)不是一回事吗,除非异步将发生在客户端?到头来,Rest方法可以在内部使用异步方法,但试图查看是否值得将公开的方法迁移到WebFlux。
发布于 2020-07-06 23:21:29
不,这是完全不同的事情。Spring在按请求执行线程模型中运行.您有100个并发请求=您有100个线程来处理这些请求。100个线程已经很多了,现在想象一下1k,10k,甚至100 k--在这个模型中完全不可能。
重点是,这些线程没有完成100%的工作时间。如果您调用一个数据库或其他服务,那么线程只是在等待响应,而不是执行它在这段时间可能做的工作。
这就是way流量的方式,您可以使用更少的线程,因为线程不是等待外部服务的响应,而是在这段时间内工作,这样就可以处理1k并发请求,而不会出现太多问题。
为什么每个人都不这么做:少用资源,更好的性能等等?首先,我认为最重要的是-这是难以置信的困难。程序流程并不像在同步编程中那么容易,调试真的很难,堆栈跟踪基本上是无用的,您需要非常小心不要阻塞所有的东西。第二,这种好处在某种程度上是值得的,大多数应用程序不需要处理成千上万的并发用户。在此阈值之前,不仅没有任何好处,而且在性能方面可能会更糟,同时在第一点提到的开发人员知识和经验上付出代价。第三,为了工作,您需要整个流程是异步的,否则您只需要阻止事件循环--调用外部服务,最重要的是调用数据库--为此您需要异步数据库驱动程序,而不是每个数据库都支持它。
https://stackoverflow.com/questions/62765757
复制相似问题