你们都知道 PayPal 是另外一家迁移到 Node.js 平台的大型公司,Jeff Harrell 的这篇博文 Node.js at PayPal 解释了为何从Java迁移出来的缘由:开发效率提升一倍(2我的用更少的时间干了5我的的活),性能提升一倍,代码量减小33%, 文件减小40%。node
(小编:我的认为深层次缘由是 Java 正在愈来愈走向封闭,并且变得愈来愈复杂并且 oracle 正在对 Java 收费,参见:Oracle 计划发布收费版 JVM,这促使了愈来愈多的公司加入了去Java化的队伍)程序员
外面有不少人说PayPal正在迁移到node.js平台。我很高兴地在这里宣布,传言是真的,咱们正在从Java迁移至node.js。express
因为历史缘由,咱们的工程师一直分为两拨人,一拨在浏览器上写代码(HTML,CSS,JavaScript);另外一拨用 Java 写应用层的代码。想象一下,一个写 HTML 的不得不去叫一个写 Java 将 A/B 两个页面连接到一块儿吗?咱们正在这样干,咱们称这样的人为全端工程师,那些便可以设计精美界面和服务器后台的那些人。如今先后端已经没有界限了,这曾经是阻碍PayPal发现的一个很大的瓶颈。bootstrap
Node.js 帮助咱们将前、后端合二为一,如今咱们一个全端团队便可解决用户的全部问题。segmentfault
像其余人同样,咱们刚开始使用 node.js 作了一些 demo 用的原型程序。跟不少人同样,她表现出来的超高性能,让咱们最终决定把她放到线上去。后端
咱们最初使用 express 来路由请求,nconf 用来配置,grunt 用来建立 tasks。Express 很是普及,可是咱们发现 Express 在多个团队协做时表现出的可伸缩性不足,它并不适合全部场合。Expres 很是灵活,但在大型团队开发上的可扩展性不佳。最终咱们的队员基于原生的node.js,并建立了Karken.js;她并非一个框架,更像是一个规范,但相对于 express,她更适合大型团队的扩展。咱们但愿咱们的工程师专一他们的应用,而不是专一他们的运行环境。浏览器
咱们已经在内部使用 kraken.js 好几个月了(咱们立刻会把他开源的!)咱们的工程师很是渴望这个内部框架能尽快上线。服务器
(小编:预测 karken.js 即将是,另外一个超火的后端框架,火热程度参考 twitter 的 bootstrap )session
咱们第一个采用 nodejs 的产品不是一个小的应用;是咱们的浏览量最多的用户首页。咱们但愿步子迈得大一点,可是咱们清楚知道其中的风险,因此咱们同时还并行地运行了一个 Java 的程序。咱们在开发和扩展 Java 方面很是有经验。因此一旦 node.js 应用出问题了,咱们能够当即切回 Java。不过,同时咱们也发现了一些很是有意思的数据。oracle
从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 应用的优点:
每秒请求数量是Java的两倍。不过更有意思的是咱们仅使用了单核的node去跟5核的Java来对比,咱们很是但愿未来继承扩大 node.js 的优点。
渲染相同的页面,node.js 节省了35%的时间。即每一个页面节约了 200 豪秒,用户能够清楚地感受到这样的区别。
咱们将继续使用 node.js 来构建咱们的Web应用。像咱们正在开发的那些门户,和已经上线的用户概览页面。还有一打正在进入 Beta 测试的那些工程,咱们会继续分享咱们在上线过程当中的经验,数据。对于 PayPal 来讲这是一个另人激动的时刻。
原文:Node.js at PayPal
翻译转载自:OurJS