OurJS


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

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


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

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

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


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

PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少44%


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

大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal  解释了为什么从Java迁移出来的原因: 开发效率提高一倍(2个人用更少的时间干了5个人的活), 性能提高一倍, 代码量减少33%, 文件减少40%:

(小编: 个人认为深层次原因是Java正在越来越走向封闭,而且变得越来越复杂而且oracle正在对Java收费,参见: Oracle计划发布收费版JVM , 这促使了越来越多的公司加入了去Java化的队伍)

外面有很多人说PayPal正在迁移到node.js平台。我很高兴地在这里宣布,传言是真的,我们正在从Java迁移至node.js

由于历史原因,我们的工程师一直分为两拨人,一拨在浏览器上写代码(HTML,CSS,JavaScript);另一拨用Java写应用层的代码。想象一下,一个写HTML的不得不去叫一个写Java将A/B两个页面链接到一起吗?我们正在这样干,我们称这样的人为全端工程师,那些即可以设计精美界面和服务器后台的那些人。现在前后端已经没有界限了,这曾经是阻碍PayPal发现的一个很大的瓶颈。

Node.js帮助我们将前、后端合二为一,现在我们一个全端团队即可解决用户的所有问题。

 

早期采纳

像其他人一样,我们刚开始使用node.js做了一些demo用的原型程序。跟很多人一样,她表现出来的超高性能,让我们最终决定把她放到线上去。

我们最初使用express来路由请求,nconf用来配置,grunt用来创建tasks。Express非常普及,但是我们发现Express在多个团队协作时表现出的可伸缩性不足,它并不适合所有场合。Expres非常灵活,但在大型团队开发上的可扩展性不佳。最终我们的队员基于原生的node.js,并创建了Karken.js;她并不是一个框架,更像是一个规范,但相对于express,她更适合大型团队的扩展。我们希望我们的工程师专注他们的应用,而不是专注他们的运行环境。

我们已经在内部使用kraken.js好几个月了(我们马上会把他开源的!)我们的工程师非常渴望这个内部框架能尽快上线。

(小编:预测karken.js即将是,另一个超火的后端框架,火热程度参考twitter的bootstrap)

将node.js布署到线上

我们第一个采用nodejs的产品不是一个小的应用;是我们的浏览量最多的用户首页。我们希望步子迈得大一点,但是我们清楚知道其中的风险,所以我们同时还并行地运行了一个Java的程序。我们在开发和扩展Java方面非常有经验。所以一旦node.js应用出问题了,我们可以立即切回Java。不过,同时我们也发现了一些非常有意思的数据。

 

开发

从1月份开始,我们花了几个月的时间来搭建node.js的基础设施。比如:sessions(会话),centralized logging(集中日志),keystores(存储)。在这期间我们有5位Java工程师在开发Java。在开发了两个月后,两位工程师开始开发node.js应用。在6月初两个团队的开发进度已经一样了,两者的功能完全一样。开发node.js应用的那个小团队,尽管推迟了两个月,但是很快赶上了。这里我们对这些相同功能做的一些单元测试得出的结果:


Node.js的是:

更少的人开发的node.js应用比Java的快一倍;
节省了33%的代码量;
少了40的文件;

(小编,这里作者的意思并不是Java程序员的素质没有node.js的好,Java语言的特点决定她需要更多的人,更多的时间,更多的代码去完成在node.js下的同样的工作,并且吃力不讨好。参考:他们为什么说面向对象有问题,探讨面向对象的一些缺陷 ;性能测评:Node.JS比Java EE快20%

这是一个非常鼓舞人的证据,我们似乎应该更快地迁移到JavaScript平台上去。我们立即做了一个决定,暂停Java应用的开发,全心全意开发JavaScript应用。这对开发Java项目的工程师来说是个好消息,他们已经消除了对node.js的疑虑,非常高兴地投入到了并行的node.js开发上来,这样我们的开发效率提高了两倍。

 

性能

性能是一个非常有意思和具有争议性的话题。在我们这,我们有两个平台实现完全一样功能的程序;一个是使用基于Spring的内部Java框架;另一个是基于kraken.js,express,dust.js和其他开源框架。 这些程序包含三个API,每个API来响应2到5个请求,由Dust来模拟获取数据和显示页面。

我们用线上的环境去测试这两个应用,并收集了完成响应的时间和请求数。

 

node.js vs Java 性能对比

在这张图上你可以看到node.js应用的优势:

 

Node.js vs Java performance graph


每秒请求数量是Java的两倍。不过更有意思的是我们仅使用了单核的node去跟5核的Java来对比,我们非常希望将来继承扩大node.js的优势。
渲染相同的页面,node.js节省了35%的时间。即每个页面节约了200豪秒,用户可以清楚地感觉到这样的区别。

 

未来

我们将继续使用node.js来构建我们的Web应用。像我们正在开发的那些门户,和已经上线的用户概览页面。还有一打正在进入Beta测试的那些工程,我们会继续分享我们在上线过程中的经验,数据。对于PayPal来说这是一个另人激动的时刻。

原文地址: 点此
社区评论 ( Beta版 )
  • #0 小晴天 1386821395000
    NB
  • #1 风情万种 1386825037000
    nodejs性能提升这么大?
  • #2 离不开 1386827101000
    @风情万种

    node.js进程数量是固定的,内存不随连接数的增长而增长;
  • #3 菜鸟瞰 1386845737000
    @离不开

    肯定的,一方面,node调用的都是c++编译后的模块,其次V8的引擎执行的速度也不是盖的。个人感觉nodejs开发web应用有纯天然的优势,不过开发大型项目的话,缺点还是蛮多的。
  • #4 慢灵魂 1386937176000
    和 golang 有的一拼
  • #5 ijse 1387332036000
    Node.js确实很不错,但也需要有能力和经验的程序员开发才行。。
  • #6 重夕 1387544353000
    @离不开

    github,搜 pm2
  • #7 周X云 1392216738000
    这个结果却是让人大吃一惊,毕竟JAVA是编译型,而JAVAscript是解析型的。
  • #8 千百度 1395995840000
    @周X云

    JAVA也是解释好吧。。只是有个JIT而已。
  • #9 梦迷离 1396763611000
    完全是架构上的问题,nodejs性能并不好,但是java的架构太烂,没做好,所以性能慢。
  • #10 dry_frog 1407732465771

    @周X云 #7

    谁跟你说java是编译型的。。

  • #11 文阶火 1409549284897

    @周X云 #7 JAVA是JIT即时编译成字节码,nodejs是用v8里的jit即时编译成机器码。 你觉得哪个快?? 居然还停留在js是文本解析执行的认识层面上。

  • #12 Cory 1417319780020

    我只能说,再过个5年,再来看看PayPal的维护情况。。。。

  • #13 范伤竹 1422695366157

    paypal 跟支付宝比起来就是小学生比博士生

  • #14 凌华充 1422813123425

    @文阶火 #11

    Hehe,JIT拿到的已经是字节码了

  • #15 王灰臣 1436096950368

    @周X云 #7 node的js 不是解析型的。 它会编译成机器码才执行,这是它速度快的原因之一。

  • #16 王灰臣 1436097006524

    @梦迷离 #9 乱扯

  • #17 史考夺 1443680720993

    同意 @Cory #12

  • #18 邬扔央 1445002468751

    JAVA毕竟已经很久了,你node.js才多久,bug应该很多吧

  • #19 毕片鸟 1454250238936

    我稍稍用了一下一个不成熟的观点就是,感觉如果是个几年一直在持续开发的项目的话,鬼知道nodejs里的代码到底会变成什么样。到底有几个人能完整看懂 。

  • #20 常邪太 1468602955491

    快是因为代码少,肯定嘛,脚本语言啊,你再跟汇编比,看谁快,java是接近人类理解的语言,真的开发复杂逻辑,你再看看谁快,还有维护一大堆脚本语言维护人员如何维护,还有就是结构无法构造清晰

  • #21 石妇仓 1471534610712

    楼上应该是做java的吧

  • #22 姬丸因 1479268727395

    nodejs不可否认是一个跨时代的技术,但是太年轻,我宁可用php或者aspx也不会用nodejs和钱打交道

  • #23 张乎士 1489641744496

    几年过去了,paypal是否还在用node.js? 即使仍然在用,也是在边边角角吧,核心系统用node.js,就是找死啊

OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 他们为什么说面向对象有问题,探讨面向对象的一些缺陷
  2. JS学习:JavaScript的核心
  3. Node初学者入门,一本全面的NodeJS教程
  4. 还有王法吗?还有法律吗?代码女神每天编程9小时
  5. 工作:大家也可以考虑下国外[美国]
  6. 我的手游创业路分享
  7. JavaScript教程:Airbnb代码规范
  8. 前狼厂悲催码农的呐喊!
  9. 我和共享软件的那些事:我赚到了十万块
  10. 一个初次创业的互联网P民是这样被投资人拒绝的
  11. AirJD-简单好用的免费建站工具

 相关阅读 - 技术前沿
  1. Python不可维护?终于把一个8万行的Python程序用Java重写了
  2. 用JavaScript玩转物联网:Technical Machine获100万美元融资,打造Tessel微处理器
  3. 浅谈当下网页设计趋势
  4. 细数黑客攻击的七大战术
  5. Groupon抛弃Rails,转向Node.js
  6. Python有开发桌面程序的开源项目吗?
  7. 国人设计,与Arduino兼容的,微型开源硬件Microduino
  8. 用树莓派你可以做的25件有趣的事
  9. Node.js之绝对选择
  10. Adobe为Photoshop CC开发的'Generator',基于Node.js

 欢迎订阅 - 技术周刊

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


 关注我们

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

ourjs官方微信号