反应式/异步编程有一点折衷--为了提高性能,你需要牺牲更简单、更易读、更易维护的代码。
如果您计划在Micronaut REST应用程序中执行阻塞操作,在HTTP请求服务线程上执行这些操作是否被认为是可怕的做法?
如果您要增加Micronaut中的HTTP请求服务线程池的大小,使其在大小上与常规HTTP框架的线程池的大小相似,例如非反应式Spring MVC / Tomcat,您会期望Micronaut的性能特征与运行在Tomcat上的Spring MVC相似吗?
发布于 2021-03-01 19:10:53
反应式/异步编程有一点折衷--为了提高性能,你需要牺牲更简单、更易读、更易维护的代码。
几乎没有表演的加兰特,
或即时收益
,当转移到异步或反应式编程时。
这是对这种编程风格范例最常见的误解之一,实际上,只要以错误的方式使用,它们就会对应用程序造成更大的危害。
异步(或反应式)编程的承诺是可伸缩性,即您的应用程序将能够在峰值负载时比传统的同步(阻塞)应用程序更好地扩展。
Micronaut
在设计时考虑到了这些因素,同时允许传统编程风格与现代web应用程序构建块共存。
Wen与Wen连用
Netty,将为您的HTTP请求通过非阻塞事件循环,允许您的应用程序接受(和扩展)超出传统Servlet (2.5 ~ event 3.1,带Async
请求)基于容器将允许。
然而,在使用这样的模型时,应该考虑到很多问题,并且Micronaut通过很好地调度资源(CPU)的使用来避免请求阻塞,从而从您的肩膀上承担大部分工作。其中一个常见且简单的技巧是使用@ExecuteOn
当您的应用程序(或资源端点)在IO操作(网络、数据库、磁盘...)上阻塞时,注释。
https://stackoverflow.com/questions/66396258
复制相似问题