微服务架构选Java还是选Go - 多用户负载测试

栏目: 后端 · 发布时间: 6年前

内容简介:微服务架构允许我们再创建新应用时自由选择不同的技术和编程语言。不过究竟哪种语言更适合我们当下的硬件?回答这个问题,需要搞明白Java和Go编写的相同应用程序之间的性能差异。作为被测系统,这里准备了两个银行应用:bank-java和bank-go。

Ivan Nikitsenka

微服务架构允许我们再创建新应用时自由选择不同的技术和编程语言。不过究竟哪种语言更适合我们当下的硬件?回答这个问题,需要搞明白 JavaGo 编写的相同应用程序之间的性能差异。

先决条件

  • 不采用其他性能增强功能
  • 使用默认框架和库设置的最小配置
  • 没有ORM框架
  • 使用纯DB驱动程序和相同的 SQL 查询
  • 用于Java的Postgres JDBC 4.2驱动程序和用于Go的github.com/lib/pq

怎么做

  1. 使用DB(Postgres)数据存储创建简单的Java/Go REST API应用程序
  2. 使用JMeter或类似 工具 创建负载测试
  3. 在单独的AWS实例上运行应用程序,加载测试和数据库
  4. 收集负载测试结果

被测系统

作为被测系统,这里准备了两个银行应用:bank-java和bank-go。

APIs:

POST / client / new / {balance} - 创建具有初始余额的新客户

POST /交易 - 将资金从一个账户转移到另一个账户

GET / client / {id} / balance - 返回客户端的当前余额

框架和依赖关系

在选择框架和库时,这里使用了最新、最流行和最简单的框架和库来尽快准备好应用程序。

Bank-java:Java 10、Spring Boot 2.0.4、spring-web 5.0.8、PostgreSQL JDBC 4.2.4

Bank-go:Go 1.8,gorilla / mux,github.com / lib / pq。

银行应用源码

Bank-java: https://github.com/nikitsenka/bank-java

Bank-go: https://github.com/nikitsenka/bank-go

测试项目

测试项目Bank-test使用动态变化的用户数(从1,000到10,000)执行对银行API的调用,验证响应并收集统计信息。

测试环境

这里用AWS并创建了两个AWS EC2实例:

  1. Bank-go t2.micro (Variable ECUs, 1 vCPUs, 2.5 GHz, Intel Xeon Family, 1 GiB memory, EBS only)
  2. Bank-java t2.micro (Variable ECUs, 1 vCPUs, 2.5 GHz, Intel Xeon Family, 1 GiB memory, EBS only)
  3. Postgres d2.xlarge (14 ECUs, 4 vCPUs, 2.4 GHz, Intel Xeon E52676v3, 30.5 GiB memory, 3 x 2048 GiB Storage Capacity)
  4. Bank-test t2.2xlarge (Variable ECUs, 8 vCPUs, 2.3 GHz, Intel Broadwell E5-2686v4, 32 GiB memory, EBS only)
微服务架构选Java还是选Go - 多用户负载测试

结果

完整结果请查看 here

微服务架构选Java还是选Go - 多用户负载测试 微服务架构选Java还是选Go - 多用户负载测试

结果小结

两个应用与1,000个并发用户完美配合。2,000个用户时,Go性能显着降低,而Java仍然是完美的。从3,000个用户及以上用户开始,两个应用都显示出不可接受的响应时间,并且错误响应的数量显着增加。

总结

使用相同的硬件,Java REST API应用程序可以提供两倍于具有PostgreSQL数据库的Go应用的并发用户数。

关于Rainbond

> Rainbond (云帮)是"以应用为中心”的开源PaaS, 深度整合基于Kubernetes的容器管理、ServiceMesh微服务架构最佳实践、多类型CI/CD应用构建与交付、多数据中心资源管理等技术, 为用户提供云原生应用全生命周期解决方案,构建应用与基础设施、应用与应用、基础设施与基础设施之间互联互通的生态体系, 满足支撑业务高速发展所需的敏捷开发、高效运维和精益管理需求。


以上所述就是小编给大家介绍的《微服务架构选Java还是选Go - 多用户负载测试》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

离心力:互联网历史与数字化未来

离心力:互联网历史与数字化未来

[英] 乔尼·赖安(Johnny Ryan) / 段铁铮 / 译言·东西文库/电子工业出版社 / 2018-2-1 / 68.00元

★一部详实、严谨的互联网史著作; ★哈佛、斯坦福等高校学生必读书目; ★《互联网的未来》作者乔纳森·L. 齐特雷恩,《独立报》《爱尔兰时报》等知名作者和国外媒体联合推荐。 【内容简介】 虽然互联网从诞生至今,不过是五六十年,但我们已然有必要整理其丰富的历史。未来的数字世界不仅取决于我 们的设想,也取决于它的发展历程,以及互联网伟大先驱们的理想和信念。 本书作者乔尼· ......一起来看看 《离心力:互联网历史与数字化未来》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具