如何解决Micronaut 中是否需要异步编程?
反应式/异步编程有一些权衡 - 您可以用更简单、更易读/可维护的代码来提高性能。
如果您计划在 Micronaut REST 应用程序中执行阻塞操作,在 HTTP 请求服务线程上执行这些操作是否被认为是糟糕的做法?
如果您要增加 Micronaut 中 HTTP 请求服务线程池的大小,使其与常规 HTTP 框架的线程池的大小相似,例如非响应式 Spring MVC / Tomcat,您是否期望 Micronaut 的性能特征类似于运行在Tomcat上的Spring MVC?
解决方法
反应式/异步编程有一些权衡 - 您可以用更简单、更易读/可维护的代码来提高性能。
在转向异步或反应式编程时,几乎没有性能保证,或至少立即获得。 这是对这种编程风格范式最常见的误解之一,如果以错误的方式使用,它们实际上会对您的应用程序造成更大的伤害。
异步(或反应式)编程承诺是可扩展性,也就是说,您的应用程序将能够比传统的同步(阻塞)应用程序更好地在峰值负载下扩展.
Micronaut 的设计考虑了这些因素,同时允许传统编程风格与现代 Web 应用程序构建块共存。
Wen 与 Netty 一起使用,Micronaut 将通过一个非阻塞事件循环为您的 HTTP 请求提供服务,允许您应用程序接受(和扩展)请求,超出基于传统 Servlet(2.5 ~ 事件 3.1 和 Async
请求) 的容器所允许的范围。
然而,在使用这样的模型时应该考虑很多问题,Micronaut 将大部分工作从你的肩膀上卸下来 - 很好地调度资源 (CPU) 使用 -允许避免请求阻塞。
一个常见且简单的技巧是在您的应用程序(或资源端点)将要阻塞 IO 操作(网络、数据库、磁盘...)时使用 @ExecuteOn
注释。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。