Micronaut 是否需要异步编程?
Is asynchronous programming required in Micronaut?
reactive/async 编程需要一些权衡 - 您可以用更简单、更多的 readable/maintainable 代码来换取更高的性能。
如果您计划在 Micronaut REST 应用程序中执行阻塞操作,在 HTTP 请求服务线程上执行这些操作是否被认为是糟糕的做法?
如果您要增加 Micronaut 中服务线程池的 HTTP 请求的大小,使其大小与常规 HTTP 框架的线程池大小相似,例如非反应性 Spring MVC / Tomcat,您希望 Micronaut 的性能特征与 Tomcat 上的 Spring MVC 运行 相似吗?
There is a bit of a tradeoff with reactive/async programming - you trade simpler, more readable/maintainable code for improved performance.
几乎没有性能保证,或至少立即获得收益,当转向异步或反应式编程时。
这是对这种编程风格范式最常见的误解之一,如果以错误的方式使用它们,它们实际上会对您的应用程序造成更大的伤害。
异步(或响应式)编程承诺是 可扩展性,即,您的应用程序将能够在峰值负载下更好地扩展比传统的同步(阻塞)应用程序。
Micronaut 的设计考虑了这些因素,同时允许传统编程风格与现代 Web 应用程序构建块共存。
与 Netty 一起使用时,Micronaut 将通过 非阻塞服务您的 HTTP 请求event-loop,允许您的应用程序接受(和扩展)超出传统 Servlet(2.5 ~ event 3.1 with Async
requests) 容器的请求允许。
但是,在使用这样的模型时需要考虑很多问题,Micronaut 通过很好地调度资源来承担你的大部分工作(CPU) 用法 - 允许避免请求阻塞。
一个常见且简单的技巧是在您的应用程序(或资源端点)要阻塞 IO 操作(网络、数据库、磁盘...)时使用 @ExecuteOn
注释。
reactive/async 编程需要一些权衡 - 您可以用更简单、更多的 readable/maintainable 代码来换取更高的性能。
如果您计划在 Micronaut REST 应用程序中执行阻塞操作,在 HTTP 请求服务线程上执行这些操作是否被认为是糟糕的做法?
如果您要增加 Micronaut 中服务线程池的 HTTP 请求的大小,使其大小与常规 HTTP 框架的线程池大小相似,例如非反应性 Spring MVC / Tomcat,您希望 Micronaut 的性能特征与 Tomcat 上的 Spring MVC 运行 相似吗?
There is a bit of a tradeoff with reactive/async programming - you trade simpler, more readable/maintainable code for improved performance.
几乎没有性能保证,或至少立即获得收益,当转向异步或反应式编程时。 这是对这种编程风格范式最常见的误解之一,如果以错误的方式使用它们,它们实际上会对您的应用程序造成更大的伤害。
异步(或响应式)编程承诺是 可扩展性,即,您的应用程序将能够在峰值负载下更好地扩展比传统的同步(阻塞)应用程序。
Micronaut 的设计考虑了这些因素,同时允许传统编程风格与现代 Web 应用程序构建块共存。
与 Netty 一起使用时,Micronaut 将通过 非阻塞服务您的 HTTP 请求event-loop,允许您的应用程序接受(和扩展)超出传统 Servlet(2.5 ~ event 3.1 with Async
requests) 容器的请求允许。
但是,在使用这样的模型时需要考虑很多问题,Micronaut 通过很好地调度资源来承担你的大部分工作(CPU) 用法 - 允许避免请求阻塞。
一个常见且简单的技巧是在您的应用程序(或资源端点)要阻塞 IO 操作(网络、数据库、磁盘...)时使用 @ExecuteOn
注释。