Jay*_*iya 6 cloud graalvm spring-webflux quarkus
低内存和高性能本机容器是未来。使用传统框架的 Java 很难像 golang/rust 那样实现较低级别的占用空间和高性能。
但最近 Java 的创新结合了 graalvm 和响应式范式,显示出非常令人印象深刻的结果。
因此,问题在于了解 Spring boot 与 Quarkus 的反应式引擎有何不同。我们是否有任何理由应该采用 quarkus Native/jvm 或者等待 Spring Native 变得稳定并期望相同的性能优势?有人可以根据实验和事实来谈谈吗?
Jay*_*iya 14
使用 quarkus 进行了一些实际操作,包括 Resteasy React、Kafka Streams、Kafka Producer 等,以评估性能。
\n让我们谈谈最大的根本区别,因为有很多区别。Quarkus 不仅仅是一种框架方法。它是一种以反应方式解决问题的平台方法。现在让我们看看一个值得信赖的公共基准网站,即 -> https://www.techempower.com/benchmarks/。让我们比较基于 Reactive Spring 的 JDBC 应用程序和基于 Reactive Quarkus 的应用程序。两者都使用 postgres 数据库。
\n注意:数字越大越好。
\n\n\n尽管两者都是反应性的,但还是有 10 倍的差异。
\n为什么?让我们深入了解细节。
\n正如我所说,quarkus 不仅仅是一个框架方法。为了确保您获得像 golang 这样的性能和内存占用,所有著名的数据库驱动程序都与 vertx 事件循环线程池垂直集成(这就是 quarkus 在下面使用的)。
\n\n\n基本上整个异步定义是由 quarkus 重写的,基本上不使用任何其他隐藏线程池。一切都与 vertx 事件池垂直集成。
\n
其他简单地将请求移交给另一个线程池的框架/库将永远无法实现类似的性能和内存利用率。
\n请记住,在 java 中,不要使用另一个线程池/线程非常重要,因为每个线程的最小堆栈大小为 1 mb,并且上下文切换时会产生负面性能开销。
\n另外,请记住 Apache Spark、flink 等分布式计算框架仅使用 2 倍数量的线程,其中 x 是应用程序中分配的 cpu 核心数。甚至 Java Fork/Join api 也以同样的方式工作。
\n\n\n这意味着 quarkus 不是使用大量线程,而是通过坚持核心与线程比率的强大基础来带来相同的性能。
\n
第二个最大的区别是
\n\n\nquarkus 中的所有注释都不使用反射,反射的性能与 spring 一样声誉不佳,尤其是在使用 graalvm 的本机模式下。
\n
请参考: https: //dzone.com/articles/think-twice-before-using-reflection了解原因?
\n\n\n第三个根本区别是 quarkus 的本机模式与本机模式下的 spring 相比令人难以置信的启动时间和内存\n开销。
\n
这是为什么?下面发生了什么?
\nQuarkus 背后的中心思想是在构建时执行传统框架在运行时执行的操作:配置解析、类路径扫描、基于类加载的功能切换等。
\nQuarkus Native 应用程序仅包含 pom 文件中提到的大量类中运行时使用的类。如何以及为何?
\nQuarkus 中的流程:\n在传统框架中,执行初始应用程序部署所需的所有类在应用程序\xe2\x80\x99 的生命周期中都会挂起,即使它们只使用一次。使用 Quarkus,它们甚至不会加载到生产 JVM 中!
\n在构建时处理期间,它准备应用程序使用的所有组件的初始化。
\n结果:\n由于所有元数据处理都已完成,因此可以减少内存使用量并缩短启动时间。
\n参考: https: //quarkus.io/vision/container-first,了解更深入的信息,quarkus 中的原生构建在 Spring 原生方面如何遥遥领先。
\n感谢 Quarkus 重新定义了 Java 的未来。
\n所以,很明显,QUARKUS 是前进的方向。
\n仍然不明白为什么要使用 quarkus?有任何疑问吗?在这里评论!如果想进行详细讨论,请前往下面提到的 zulip 频道。
\n感谢 Clement Escoffier ( https://github.com/cescoffier ) 和 Georgios Andrianakis ( https://github.com/geoand ) 清楚地解释了 quarkus 的基础知识。
\n另外,请访问https://quarkusio.zulipchat.com/login/另外,如果您希望学习 quarkus 并从根本上改变现有和未来应用程序的运营成本和性能,请
\n\n\nQuarkus 参考资料:\n https://www.youtube.com/channel/UCaW8QG_QoIk_FnjLgr5eOqg \n https://developers.redhat.com/courses/quarkus ->(这些是免费的,甚至不需要注册)
\n
在 quarkus 上完成的 POC 参考:\n https://github.com/JayGhiya/QuarkusExperiments/tree/initial_version_v1
\nPOCS 的见解:与传统的 Java 同类产品相比,内存占用量降低了 5-8 倍,性能提高了,所需代码减少了 30%-50%。
\n| 归档时间: |
|
| 查看次数: |
3101 次 |
| 最近记录: |