当前位置:主页 > 网站建设 > 网络建站知识 >

重庆网站建设|RESTful与java框架的性能比较

发表日期:2017-09-16 08:23文章编辑:Smileby陌少羽浏览次数: 标签:重庆,网站建设,RESTful,与,java,框架,的,性能

在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单元实现为微服务,可以将它们发布到一些分布式计算单元或者Docker中,并在机能需要的时候及时地创建更多的服务单元。


微服务是一个概念,并没有划定服务的格局,但是良多厂商和框架都不约而同的采用RESTful的架构,尽管也有一些其它的机能很好的RPC框架。


如何在Java生态圈选择一个轻量级的RESTful框架?可以参考一些其他人的经验, 好比我翻译的: 最好的8个 Java RESTful 框架。


就我个人而言,我选择框架的理由很简朴:


 


简朴,轻量级


机能好


不乱,可靠


易于开发和维护


我会首选遵循Java规范(JSR339)的框架,轻量级,便于发布到Docker容器中。 所以我不会选择Spring boot, Spring MVC, CXF等比较重的框架,也不会选择纯netty这样的太过底层,还得实现路由等基本功能框架。


由于追求轻量级,便于发布到docker容器中,我也不会考察JBOSS, Tomcat这样的JEE容器, 而是选用jetty, undertow这样的嵌入式容器。


 


所以,这里我挑选了几个候选者:


 


Jersey + Grizzly


Jersey + Jetty


Dropwizard


RESTEasy + Netty


RESTEasy + Undertow


[Updated on 2015/11/18]


我增加了更多的 RESTful 框架,有些不是Jax-RS的实现,但是也有很活跃的社区。


 


Jersey + Jetty4


Spring Boot


纯Netty


Vert.x


你会发现一些有趣的测试结果。


Jersey 是Jax-RS的官方参考实现,可以很好的和其它JEE容器集成。RESTEasy是JBoss出品的框架,也很轻易的和其它容器集成。Dropwizard实际上集成了Jersey, Jetty以及其它的第三方库好比它的Metrics,提供了一站式的开发,略微有些厚重。


 


测试相关的代码已经放在了GITHUB上: 代码


 


编译代码


 


测试代码是一个多模块的Maven项目, 你直接运行maven clean package就可以天生各个jar,而且这些jar包含了所依靠的类,执行起来相称简朴。


你也可以在每个模块下运行mvn exec:java启动服务,然后在浏览器中访问 http://localhost:8080/rest/hello (对于Jersey + Jetty,地址是http://localhost:8080/hello)


 


测试环境


 


服务器


AWS C3.2xlarge


 


8 cores (E5-2666 v3 @ 2.90GHz)


memory: 16G (服务只分配了4G内存)


Java


1.8.0_51


 


测试工具


wrk


测试命令如: wrk -t16 -c1000 -d30s http://127.0.0.1:8080/rest/hello.


针对每个case, 我使用16个线程,以及100/200/500/1000并发进行测试。


 


服务启动命令


 


java -Xmx4g -Xms4g -jar jersey-grizzly2-1.0-SNAPSHOT.jar


java -Xmx4g -Xms4g -jar jersey-jetty-1.0-SNAPSHOT.jar


java -Xmx4g -Xms4g -jar dropwizard-1.0-SNAPSHOT.jar hello.yml 


java -Xmx4g -Xms4g -jar resteasy-netty-1.0-SNAPSHOT.jar 


java -Xmx4g -Xms4g -jar resteasy-undertow-1.0-SNAPSHOT.jar


java -Xmx4g -Xms4g -jar springboot-1.0-SNAPSHOT.jar


java -Xmx4g -Xms4g -jar resteasy-netty4-1.0-SNAPSHOT.jar 


java -Xmx4g -Xms4g -jar nativenetty-1.0-SNAPSHOT.jar


java -Xmx4g -Xms4g -jar vertx-verticles-1.0-SNAPSHOT.jar -instances 20


测试结果


 


测试结果数据可以查看这里: 测试数据,


延迟基本在几毫秒到10几毫秒之间。


 


图形化测试结果(y轴为Requests/sec, x轴为并发量):


重庆网站建设|RESTful与java框架的性能比较


 


结论


 


从结果看,


 


RESTEasy的机能要好于 Jersey,不管哪种嵌入式JEE容器。


Jersey+Grizzly2和Jersey+Jetty, dropwizard机能差别不大


dropwizard底层实际是Jersey+Jetty,机能结果也和Jersey+Jetty一样


RESTEasy+netty (netty3)的结果并没有优于RESTEasy+undertow.这出乎我的意料,可能CPU和Memory占用上会好一些


RESTEasy+netty4的机能远远低于RESTEasy+netty3,这出乎我的意料。或许由于Netty线程池的改变。


纯netty的机能远远高于其它框架,一方面是因为没有http router的逻辑,另一方面也显示了Netty框架的优秀。假如不是实现很复杂的路由和良多的Service,不妨使用纯Netty实现高机能。


Spring Boot太厚重了,使用Spring MVC的语法,机能只有Jersey的一半。


Vert.x底层使用Netty,可以使用Java 8 Lambda语法,也提供了其它语言的支持,但是机能看起来不是太好,而且跟着并发量增大吞吐率也随之下降。先前的vert.x测试有题目,只用到了单核,谢谢@Stream网友的提醒,我在代码中增加了vertx-verticles模块,支持多核(java -jar vertx-verticles-1.0-SNAPSHOT.jar -instances 20)。 Vert.x机能也不错。@heng


当然测试也有一点遗憾,就是没有记实测试时的CPU占用率和Memory占用率,以我个人的经验,这方面Netty会占一些上风。

如没特殊注明,文章均为狐灵科技原创,转载请注明  http://www.hulingweb.cn/jzzs/114.html
  • 更多 +狐灵业务单元

    营销型网站建设 品牌创意网站 企业官方网站 上市公司网站 B2C电子商务网站 大型门户网站 专题活动网站 定制化电子商务 产品商城网站 移动手机电商网站 微信会员电商

  • 更多 +我们的优势

  • 更多 +关于狐灵

    狐灵致力于互联网品牌建设与网络营销,专业领域包括网站建设、电子商务、移动互联网营销、系统平台开发, 与其他网站建设及系统开发公司不同,我们的整合解决方案结合了狐灵网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供一体化全方位的互联网品牌整合方案!

更多 +联系我们

服务热线:15523356218座机专线:023-68168040

业务 QQ传真:023-68168040

售后专线15082661954售后QQ:

渠道合作邮箱Foxl@hulingweb.cn

我们的认知

在我们的对手消耗大量的时间停留在碎片化的互联网设计或者程序实现的时候,我们已经开始把数字化品牌建设和网络传播进行了整合。只有通过整体的互联网品牌分析,帮助企业家们进行互联网品牌建设,并传播企业品牌,并围绕品牌树立品牌价值,提升企业与用户的互相交流,与用户品牌交互,让用户能找专业的方法去解决问题。传播品牌,激起消费者品牌意识,在这过程中创造价值,这是我们成功的秘诀,也是我们帮助用户成功的诀窍,更是成就一流品牌的一条直达线。

不能否认的是,建设网站,创造互联网品牌价值的过程,是一种在互联网上艺术的行为,但互联网跟涂鸦全然不同,企业的品牌价值并不体现在希望品牌成为某个这种艺术家的作品。互联网传播的对象是用户,用户拥有自己的文化体系,群落共性才是互联网传播根本,这种传播才是互联网创造价值的体现,这种价值的体现呈现多样。空洞的好看没有实质是网站建设的闹剧,网站如果不能激发品牌价值和网络营销和帮助用户,则是网站建设的悲哀,这样的网站没有灵魂!所以,网站建设运营,网络营销必须得得人心,有非常好的用户体验,能够解决问题和需求,能够为梦想者创造和传播品牌价值,最后创造价值,狐灵与你同行!


HI,Are you ready?

  • 公司名称*
  • 邮箱*
  • 姓名*电话*

您需要的服务*

现有网站改版
我需要做微信营销
建设全新的企业网站
要找长期合作公司,需要年度服务
我需要做购物商城
我需要做系统平台
我需要做营销型网站
我需要优化推广

您最关注的地方*

对功能要求比较高
对设计创意要求比较高
需要可以购物支付
搜索引擎排名

预算*

5千以下 1万以下 1-2万 2-3万 3-5万 5-10万 10万以上 大型项目需要招标
验证码 看不清?点击更换 看不清? 点击更换

售前售前
售后售后
留言微信
Top