选择Node.js作为服务器端运行环境的优势解析
groupon从ruby on rails迁移至node.js
为什么要放弃原有技术栈?
groupon目前在全球共有两套站点——美国网站和欧洲网站,其美国网站前端最初是一个单一的rails(最流行的ruby开发框架)代码库。对于为什么会选择rails来开发最初的网站,groupon开发人员表示,rails非常适合小型团队快速开发,可以让网站快速启动并运行起来,这对于初期功能不断变化的groupon来说,是个非常不错的选择。
随着groupon的发展和新产品不断推出,这个代码库越来越大,有太多的开发者在同一个代码库工作,他们很难在本地运行并测试产品,如果有问题需要回滚,那么每个人的工作都前功尽弃了。
groupon团队决定将原有的单一rails库分割成小的、独立的、更易于管理的库。
为什么选择node.js?
groupon团队评估了不同的软件栈,想寻找一个能够解决这些问题的方案——有效处理大量传入的http请求、使并行api请求服务于每一个http请求、将结果渲染为html5,并可以有效实现监控、部署和支持。
该团队使用不同的软件栈开发了原型,并测试了它们,总体来说,发现node.js是个非常适合的解决方案。
如何迁移?
groupon团队使用node.js重建了网站页面的每个主要部分,将它们作为一个独立的node.js应用程序,然后重建了基础设施,使所有独立的应用程序可以一起工作。迁移之后,groupon成为了全球最大的node.js部署产品之一。
迁移带来的好处
之前单个rails前端代码库被分割成了20个独立的应用程序,其带来了如下的好处:页面加载更快——快了50%与之前相比,处理相同的流量所使用的硬件资源更少团队可以独立地更改、部署各自负责的模块网站功能和设计实现可以快速迭代
更详细的信息可参阅 groupon开发团队的博客。
选择nodejs的n个理由
caleb madrigal是来自美国密尔沃基市的一名软件顾问。四年前,他在听说“将javascript用作服务器端语言”这样的说法时,认为那是一个荒唐的想法。有那么多服务器端语言可供选择,为什么要选javascript?这是他当时的想法。但现在,他在当前的项目中选用了javascript/node.js。他近日撰文对自己的这一转变进行了解释。
首先,许多*企业都使用了node.js,并且效果非常好,其中包括paypal、walmart、ebay、groupon和linkedin。这些企业在生产环境中大量使用了node.js。madrigal举了paypal的例子。paypal针对他们网站上其中一个流量最大的应用,对比了它的node.js版本和java版本,发现前者在多个方面优于后者,并最终决定由java切换到javascript。infoq对此有过报道。
其次,node.js有一个很棒的包管理系统npm。通过运行“npm install 包名”几乎可以安装任何包/库。另外,通过package.json文件可以跟踪依赖关系。因此,node.js库很容易克隆,运行“npm install”可以安装所有的依赖关系。
再次,node.js社区异常活跃,总是有新的库产生。这些库非常好用,使javascript成为一个非常高效的平台。
然后是node.js 的repl(read-evaluate-print loop)命令行。开发人员只需要在终端中输入“node”,就可以对node.js进行逐行测试。
最后,node.js有一个很重要的特性:非阻塞函数。这就是为什么我们会在node.js的代码中看到大量的callbacks和promises。这种设计模式给node.js带来了非常优异的性能。
此外,node.js的最大一个优点是:它是javascript。任何人都知道javascript,所以使用node.js不需要学习一门新语言。有了它,开发人员可以只使用一种语言,浏览器端用javascript,服务器端用node.js。在使用像mongodb和couchdb这样存储json对象的文档数据库时,这会极大地简化数据库和用户界面之间的数据传递任务。
下一篇: 高效益营销:如何将seo转化成营销思维