Spring boot 如何使用Netty扩展Spring反应堆栈

Spring boot 如何使用Netty扩展Spring反应堆栈,spring-boot,tomcat,netty,project-reactor,reactor-netty,Spring Boot,Tomcat,Netty,Project Reactor,Reactor Netty,我正在启动一个使用SpringWebFlux反应堆栈的项目,默认情况下,它使用Reactor Netty作为服务器。如果我错了,请纠正我,但我读到Netty只能拥有最大数量的事件循环,作为实例上处理器的数量。 这意味着,如果一个请求被阻塞一秒钟(这不应该是我所知道的用例,仅举个例子),我们将只能在实例上只有一个处理器的情况下每秒最多获得一个事务 我想知道Netty与像Tomcat这样的servlet容器相比有多大的可伸缩性?使用Netty和Tomcat的优缺点是什么 我还想知道优化Netty配置

我正在启动一个使用SpringWebFlux反应堆栈的项目,默认情况下,它使用Reactor Netty作为服务器。如果我错了,请纠正我,但我读到Netty只能拥有最大数量的事件循环,作为实例上处理器的数量。 这意味着,如果一个请求被阻塞一秒钟(这不应该是我所知道的用例,仅举个例子),我们将只能在实例上只有一个处理器的情况下每秒最多获得一个事务

我想知道Netty与像Tomcat这样的servlet容器相比有多大的可伸缩性?使用Netty和Tomcat的优缺点是什么

我还想知道优化Netty配置的方法,以确保它可以投入生产

这意味着如果一个请求被阻塞了一秒钟(这不应该是我所知道的用例,举个例子)

这个堆栈的全部目的是在有限的资源(这里是线程)上进行大规模扩展。这一切都建立在关键要求的基础上,每一步都是异步和非阻塞的


所以你的“举个例子”毫无意义。是的,如果您阻塞一秒钟,CPU将在这一秒钟内只处理单个请求。您这样做也是完全错误的,堆栈中的所有内容都是为了帮助您避免阻塞。

是的,但有时如果您使用的是mysql db,那么这是不可避免的,对吗?这就是为什么他们还提供发布和调度程序来处理阻塞情况。无论如何,我的问题更多的是如何选择使用netty或tomcat,以及利弊如何。所以这是netty vs tomcat的问题,与spring或reactor无关。。。请注意,bare netty完全是基于未来/回调的,需要非阻塞用户代码才能正确执行,因此,例如,将一些阻塞JDBC指令放入netty
ChannelHandler
中也同样存在问题。在任何情况下,在反应堆栈中使用阻塞组件都会很快否定该堆栈的大部分好处。因此,我想看看是否有任何理由在反应堆栈中使用tomcat而不是netty?