REST 的 Grails 与 Spring 性能对比

Posted

技术标签:

【中文标题】REST 的 Grails 与 Spring 性能对比【英文标题】:Grails vs Spring performance for REST 【发布时间】:2014-05-24 23:03:34 【问题描述】:

我使用纯 Groovy/Grails 创建了一些 REST 端点。目前大部分操作都是类似 CRUD 的。

我开始将 Grails 应用程序的性能与我使用 JMeter 制作的 CRUD 场景的等效 Java/Spring 应用程序的性能进行比较。所以现在我将我在 Grails 中实现的场景的一个子集移植到一个基本的 Spring MVC 应用程序中。

我很想看看其他人在网络上发布的性能比较。谁能给我推荐一些?

欢迎提供有关我将要进行的测试和分析的任何其他信息。谢谢!


关于答案的更新

@Lari 在下面的回答引用了一个具有极其全面测试的网站,比较了 Grails 2.X 与 Spring 4.X(请参阅 README.md)以及许多其他框架。 但是,这些测试是 Grails 在 Resin 上运行,而 Spring 在 Tomcat 上。我有点奇怪,因为 Grails 默认使用 Tomcat。 Resin 和 Tomcat 可以说有similar performance。 该网站有几个部分(顶部的选项卡)甚至子部分(“结果”区域中的选项卡)。我最初的问题是关于 REST 的 Web 服务行为。为此,这里是回答我的问题的***部分: Querying multiple rows in a DB table (HTTP GET) 并返回 JSON 数组作为结果。 Modifying multiple rows in a DB table 并返回 JSON 数组作为结果。此测试不使用带有正文的 HTTP PUT,而是使用 HTTP GET。滚动至页面底部了解详情,以及Requirements 页面。 如果您对 html 呈现感兴趣,请参阅 Fortune Cookie 示例。

毫不奇怪,Spring 更好,但就像@Joshua 指出的那样,这是一个人为的例子,你必须判断从结果中推断出什么。更不用说 Grails 使用 Resin 而 Spring 使用 Tomcat。希望每个服务器(Tomcat / Resin)在最大线程、Java 内存等方面都进行了类似的配置?配置文件可能隐藏在source code 中(如果你发现了,请告诉我)。

我还为 Spring 4.X 与 Grails 2.X 设置了虚拟应用程序,Tomcat 的配置完全相同(两者都使用相同的独立 Tomcat 安装,而不是捆绑在 Grails 中的一个)。在我的测试中,我执行了一个 HTTP GET 并返回了一个 JSON 数组,该数组是使用静态(预实例化)内存对象(无 DB 查询)形成的。我的结果也显示出更好的 Spring 性能(抱歉,我再也找不到我的数据了!)。我使用 Spring Boot 快速将一个 Spring 应用拼接在一起,而 Grails 默认已经有了脚手架。

【问题讨论】:

很遗憾,我无法向您推荐任何比较,但我对您将获得的结果非常感兴趣。请发布它们。 我认为您会发现的主要问题之一是变量太多,即使有人确实比较了两者,比较也只会对那个确切的实现有效。您不能使用这种基准来推断另一个项目的性能。尽管如此,我还是很高兴看到有人真正衡量他们自己的应用程序的性能,而不仅仅是制作一个虚拟应用程序来衡量。 【参考方案1】:

有http://www.techempower.com/benchmarks/ 。 source code 在 github。

【讨论】:

【参考方案2】:

看看这个PLAY VS. GRAILS SMACKDOWN 演示文稿。你可以在里面找到一些性能的结果。

【讨论】:

以上是关于REST 的 Grails 与 Spring 性能对比的主要内容,如果未能解决你的问题,请参考以下文章

使用 Grails Spring Security Rest 插件时如何获取客户端登录失败的原因?

Grails - grails-spring-security-rest - 无法从 application.yml 加载 jwt 机密

使用 Spring Security Rest 插件保护 Grails Rest Api

在 Grails 的 Spring Security Rest Plugin 中注销时出现 404

grails spring security rest /api/login 401 Unauthorized

Grails Spring Security REST 插件 - 令牌存储失败