OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

Web服务性能测试:Node完胜Java


分享到
分类 技术前沿   发布 ourjs  1392123793000
注意 转载须保留原文链接,译文链接,作者译者等信息。  
简介

我最近做了一些简单的关于内存的Web Service性能测试。我使用Java(REST + SOAP)和Node.js(REST)将一些接口功能缓存起来。跟期望的一样,Node应用的性能远远超出Java。(响应时间至少快1倍以上)。

译者注*  NodeJS跟许多其他单线程语言一样,对内存并不贪婪,因为没有关于线程的内存开销,内存占用不会随着连接数的增长而增长,尤其在剔除掉读写文件/数 据库等异步操作后,完全基于内存的NodeJS将有更显著的性能提升,从某种意义上来说基于内存的nodejs服务所能支持的最大并发数将仅受限于带宽和 CPU的处理能力。
可参见: 性能测评:Ngix_Lua, Node.JS Python三者性能相当,均比php快近一倍,  PayPal为什么从Java迁移到Node.js


缓存应用

图1: 关于缓存应用的原理图。缓存支持插入,获取,删除键/值对


图2: 关于应用更详细的物理图



这 里使用了另外一种形式的REST,cache操作通过HTTP verbs来完成(Insert = PUT, Fetch = GET, Remove = DELETE)。数据刷新通过使用timeouts(Node)和scheduled threads(Java)来完成。缓存冗余是通过服务器间的REST调用来实现。(通过PUT/DELETE)

对于Java SOAP的扩展,cache操作通过经典的HTTP POST SOAP包来实现。

应用层结构

图3: 基于Cache的Java REST组织结构图。Apache Tomcat + Jersey (servlet)在这一层。



图4: 基于Cache的Java SOAP组织结构图。Apache Tomcat + Axis2 (servlet)在这一层。



图5: 为Node应用。仅初始化了一个worker。




测试


图6: 为我测试时使用的环境




Java + Node REST 缓存插入测试
ab -A username:password -u restput.txt -n 1000 -c 1 https://server/ctispan/rest/key/111 > results.txt

restput.txt
value=test111

Java SOAP 缓存获取测试
ab -A client:password -T "application/soap+xml; charset=UTF-8" -p soapget.xml -n 1000 -c 1 https://server/ctispan/services/CacheProxyWS.CacheProxyWSHttpSoap11Endpoint/ > results.txt

soapget.xml
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><ns1:getValue xmlns:ns1="http://server.ctispan.jwisoft.com"><ns1:key>111</ns1:key></ns1:getValue></soapenv:Body></soapenv:Envelope>

Java SOAP 缓存插入测试
ab -A client:password -T "application/soap+xml; charset=UTF-8" -p soapput.xml -n 1000 -c 1 https://server/ctispan/services/CacheProxyWS.CacheProxyWSHttpSoap11Endpoint/ > results.txt

soapput.xml
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><ns1:putValue xmlns:ns1="http://server.ctispan.jwisoft.com"><ns1:key>111</ns1:key><ns1:value>text111</ns1:value></ns1:putValue></soapenv:Body></soapenv:Envelope>


结论

下 面A/B测试生成的一些数据。对于Node对比Java的结果,我并不吃惊。不过对于Java REST和SOAP的对比让我稍微有些吃惊。我原本以为因为SOAP的复杂性,REST的性能应该比SOAP好很多才对。这也许是因为Apache Axis2 API要比Jersey API高效的多造成的吧。








原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 你不知道的JavaScript用法,Hacker是这样写JS的
  2. QQ邮箱是如何泄密的:JSON劫持漏洞攻防原理及演练
  3. 那些用JavaScript写的操作系统
  4. 为什么大神级程序员的C语言代码里到处都是goto?
  5. 下一阶段的NodeJS:TJ负责Node,NPM可能要收费
  6. Web标准化正在消灭HTML程序员
  7. 告诉大家一个好消息,我被炒了!
  8. PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少44%
  9. NPM开始招人了
  10. 一名靠谱的JavaScript程序员应备的素质
  11. AirJD-简单好用的免费建站工具

 相关阅读 - 技术前沿
  1. 那些用JavaScript写的操作系统
  2. JavaScript MVC框架的未来:Backbone.js还不够优秀
  3. PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少44%
  4. Python不可维护?终于把一个8万行的Python程序用Java重写了
  5. 用JavaScript玩转物联网:Technical Machine获100万美元融资,打造Tessel微处理器
  6. 浅谈当下网页设计趋势
  7. 细数黑客攻击的七大战术
  8. Groupon抛弃Rails,转向Node.js
  9. Python有开发桌面程序的开源项目吗?
  10. 国人设计,与Arduino兼容的,微型开源硬件Microduino

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号