首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧反应和夸克反应原理的性能差异

弹簧反应和夸克反应原理的性能差异
EN

Stack Overflow用户
提问于 2021-09-07 17:39:45
回答 1查看 1.6K关注 0票数 2

低内存和高性能的本机容器是未来的发展方向。使用传统框架的Java一直很难使用,以实现更低级别的占用空间,并具有高性能,比如golang/锈病。

但是最近在java中的创新,即graalvm和反应性范例的结合,正在显示出非常令人印象深刻的结果。

因此,这个查询是关于了解Spring与Quarkus之间的反应性引擎是如何不同的。我们是否应该采用夸克本机/jvm或等待spring本机稳定并期望获得相同的性能好处?有人能根据实验和事实说话吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-07 17:39:45

两只手握夸克的口袋,包括resteasy反应,卡夫卡流,卡夫卡制作者等,都是为了逃避表演。

让我们谈谈最大的根本差别,因为有许多。Quarkus不仅仅是一种框架方法。这是一种以被动方式解决问题的平台方法。现在让我们看看一个可信的公共基准站点,即-> https://www.techempower.com/benchmarks/。让我们比较一下基于反应性Spring的JDBC应用程序和基于反应性Quarkus的应用程序。两者都使用postgres db。

注:数字越高越好。

有10倍的差异,尽管两者都是反应性的.

为什么?让我们深入研究细节。

正如我所说,夸夸斯不仅仅是一种框架方法。为了确保像golang这样的性能和内存占用,所有著名的db驱动程序都垂直集成了vertx事件循环线程池(这是夸克在下面使用的)。

--基本上,整个异步定义是由夸克重写的,实质上不使用任何其他隐藏线程池。所有东西都垂直地与vertx事件池集成。

其他简单地将请求切换到另一个线程池的框架/lib将永远无法实现类似的性能和内存利用率。

请记住,在java中,不使用另一个线程池/线程是非常重要的,因为每个线程的最小堆栈大小为1MB,并且当上下文切换时会产生负面的性能开销。

另外,请记住,像Apache、flink等分布式计算框架只使用2x的线程,其中x是分配给应用程序的cpu核数。甚至Java /Join api也以同样的方式工作。

--这意味着夸克没有使用大量的线程,而是通过坚持核心与线程比率的强大基础来实现同样的性能。

第二大区别是

夸克中的所有注释都不使用反射,因为反射在性能方面名声不好,特别是在带有graalvm的本机模式下。

请参考:https://dzone.com/articles/think-twice-before-using-reflection了解原因?

第三个基本区别是,与本机模式下的spring相比,夸夸斯的启动时间和内存开销难以置信。

为什么会这样呢?下面发生了什么?

Quarkus背后的核心思想是在构建时执行传统框架在运行时所做的工作:配置解析、类路径扫描、基于类加载的特性切换等等。

Quarkus本机应用程序只包含在运行时使用的类,这些类来自pom文件中提到的大量类。怎么做和为什么?

Quarkus中的流程:在传统框架中,执行初始应用程序部署所需的所有类都在应用程序的生命周期中徘徊,即使它们只使用一次。使用Quarkus,它们甚至没有加载到生产JVM中!

在构建时处理过程中,它将准备应用程序使用的所有组件的初始化.

结果:由于所有元数据处理都已经完成,因此内存使用量更少,启动时间更快。

参考:https://quarkus.io/vision/container-first获得更多的深入信息,如何在夸夸斯中构建本机在spring本机方面遥遥领先。

夸夸斯感谢他重新定义了java的未来。

显然,QUARKUS是前进的方向。

还不确定为什么要用夸克?有什么疑问吗?在这里发表评论!如果要进行详细的讨论,请到下面提到的嘴唇频道进行讨论。

赞扬克莱门特埃斯科菲尔(https://github.com/cescoffier)和乔治奥斯安德里亚纳基斯(https://github.com/geoand)清楚地解释夸克的基本原理。

此外,如果您希望学习夸克并从根本上改变您现有和未来应用程序的操作成本和性能,那么请转到https://quarkusio.zulipchat.com/login/

Quarkus的

引用:https://www.youtube.com/channel/UCaW8QG_QoIk_FnjLgr5eOqg https://developers.redhat.com/courses/quarkus -> (这些是免费的,甚至不需要注册)

关于夸克的POCs参考文献:https://github.com/JayGhiya/QuarkusExperiments/tree/initial_version_v1

来自POCS的洞察力: 5x-8x比传统的java低内存占用和更高的性能,所需代码减少了30%-50%。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69092497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档