为什么我们要从 NodeJS 迁移到 Ruby on Rails - 开源中国社区
为什么我们要从 NodeJS 迁移到 Ruby on Rails
oschina 2012年05月30日

为什么我们要从 NodeJS 迁移到 Ruby on Rails

oschina oschina 发布于2012年05月30日 收藏 23 评论 16

腾讯云-1小时搭建人工智能应用,让技术更容易入门>>>  

声明:这篇文章绝不是一篇讨论 NodeJS 和 Ruby on Rails 孰优孰略的檄文。它描述的只是我们做决策过程中的一些思考、决策背后的原因。两种框架都非常优秀,都出色的完成了它们的设计初衷,这也是为什么我们部分的模块仍然运行在NodeJS上的原因。

我是NodeJs的大粉丝,认为这是一项让人非常兴奋的技术,相信它会变的越来越流行。我对这项技术非常的欣赏——尽管我们最近把Targeter App从NodeJS迁移到了Ruby on Rails。

我们当时使用NodeJS开发它的原因很简单。我有一个程序包,能很快的将我们的应用弄上线(我们花了54小时做这个事情),相比起Ruby,我更 常使用的是JavaScript。因为我们的技术架构牵涉到MongoDB,我的这些特长只有在NodeJS环境里才会有意义。然而,随着应用规模的增 长,我认识到,选择NodeJS来实现这个应用是个错误的选择。下面让我来概述一下其中的原因。

NodeJS很适合做那些有大量短生命期请求的应用。对于传统的CRUD应用,它也很好,但不是非常的理想。在 PHP,Ruby,Python语言里都有很成熟、优化的很好的框架来处理这种应用。NodeJS里的所有东西都异步执行的理念对于CRUD应用来说没有 任何效果。其它语言里的流行的框架能提供非常好的缓存技术,你所有的需求都能满足,包括异步执行。

NodeJS是一种非常年轻的技术框架,它的周边程序库都不是很成熟。我说这些并没有任何对那些代码捐赠者冒犯 的意思,他们很优秀,开发出来很多优秀的程序库。然而,大部分程序库需要改进,而NodeJS的这种快速成长的环境意味着每一版升级中都带有大量的变化; 当你使用一种前沿技术时,你十分有必要尽快的紧跟最新的版本。这给创业型的企业带来了很多的麻烦。

另外一个原因是关于测试。NodeJS里的测试框架还不错,但跟Django或RoR平台上的相比还是差一些。对于一个每天都有大量的代码提交、并且在一两天内就要发布的应用来说,程序不能出问题是至关重要的,否则你为此辛苦的努力变得得不偿失。没有人愿意花一天的时间改一些弱智的bug。

最后一点,我们需要的是一种能缓存一切的东西,并且要尽快的实现。尽管我们的应用在增长,每秒钟有上万次的hits,但绝不会出现很大量的访问请求;这不是一个聊天程序!主程序最多时也就达到1000RPS,这样的负载对于Ruby on Rails和Nginx来说算不了什么。

如果你现在还在读这篇文章,那你已经看到了我所有要说的了,你也许非常坚持的想知道我们的应用什么地方还在使用NodeJS。是这样的,我们的应用 由两部分组成。一是界面,用户看到的这部分,二是负责报表管理的部分,以及做日志的功能。后者是NodeJS的一个最佳使用场景,存在有大量的短周期的请 求。这部分的动作需要尽快的执行完成,甚至要在我们的数据推送还没有完成之前。这很重要,当请求执行还未结束,浏览器继续等待响应结束,这会影响用户使用 体验。NodeJS的异步特性救了我们。数据要么被存入数据库,要么被处理掉,当请求一旦执行完成,浏览器就可以开始做其它重要的事情了。

[本文英文原文链接:Why we moved from NodeJS to RoR ]

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:为什么我们要从 NodeJS 迁移到 Ruby on Rails
分享
评论(16)
最新评论
0
好像和屏幕大小没关系.如果有个调节字体的功能就好了
0

引用来自“月风”的评论

为什么我要从ruby on rails迁移到tornado...

+1 :)
0
node.js 用在 push server 挺好的,拿来做web 还是省省吧!
0
各有各的优点,适用不同项目,喷毛啊
0

引用来自“水牛叔叔”的评论

老外程序员“互喷”也这么优雅,这么理性。看到题目的“互喷”我就想起了“脏话”、“情绪失控”、“失去理智”之类的东西。看来我邪恶了

面壁去....
0
老外程序员“互喷”也这么优雅,这么理性。看到题目的“互喷”我就想起了“脏话”、“情绪失控”、“失去理智”之类的东西。看来我邪恶了
0
一直以为Node.js只适合做通信服务器,而不是复杂的业务系统
0
我觉得很恶心的一点就是 ECMAScript 没有设计协程,那样类似 node.js 的异步就只能 callback 套 callback,无法通过挂起、唤醒协程函数来把代码顺序化。
0
NodeJS的异步特性救了我们。数据要么被存入数据库,要么被处理掉,当请求一旦执行完成,浏览器就可以开始做其它重要的事情了。

这个在其它语言里都很容易实现~
0
nodejs用的人太少了。
还是Python/java靠谱
0
nodej做聊天室怎么样?
0
为什么我要从ruby on rails迁移到tornado...
0
我也从nodeJS挽回了java
0

引用来自“爱国者”的评论

手机客户端的字体还是很小啊

换大屏的....
0
手机客户端的字体还是很小啊
0
老外也怕互喷啊,写文章之前先声明下立场:)
顶部