Rails Ruby On Rails 和 NodeJS 的比较

jefffreylam · 2012年10月10日 · 最后由 hit1983 回复于 2013年03月31日 · 17748 次阅读

刚看个贴: http://www.infoq.com/news/2012/10/Ruby-on-Rails-Node-js-LinkedIn

其中的一段话很吸引眼球啊: Better performance, Node.js being up to 20x faster than Rails for certain scenarios Using only 3 servers instead of 30, leaving room for a 10x traffic growth Front-end JavaScript engineers could be used for back-end code, and the two teams were actually merged into one

大家来讲讲 开发速度,安全,部署,效率,第三方包 等等

Node.js 是纯粹的异步执行 web framework,如果考虑运行效率,就用呗,但是 Rails 在开发速度和使用方便性(特别是调试)上绝对优于 Node。

ruby 如果基于 event machine,和 nodejs 的差别也不大,这个以前在杭州活动的时候演示过。 不过,除了 rails 本身,我们还用了很多三方库,这些 gem 的并发方案是基于线程甚至进程的,如果改成事件驱动模式可能会有问题

NodeJS 更适合 API,前端如果是 mobile app,后端 NodeJS 就挺好的

原文的那些数字要用“批判和学习”的眼光来看的。他们改了后把之前 server 端生成 html 的大量工作改成了 server 输出数据,客户端来展现。这个改变即使保留 rails 不用 node,也能极大减轻服务端的任务。

Node 的异步机制和资源耗用等确实很棒,但如果产品本身就大部分时间耗在数据库、服务端计算等方面的话善用缓存、后台任务等 Rails 也能很好的就付。

Front-end JavaScript engineers could be used for back-end code 这个是不是比较奇葩

他们要用新的方式用 Rails 重写一次,效果也能达到这么好!

通常来说,一个大型项目里并非非得用一种语言。 用 Python/Ruby + C,用 Nginx+Lua,用 PHP+node.js 都是很常见的情况。只要架构设计合理,逻辑分层,会很容易把需要高性能运算的作业请求转发给 Node.js、openrestry、C、Java 等后端。 在数据层也是一样的,Memc、Redis、Mongo 等都是很好的数据缓存工具。

补充一下,实际上我觉得 ROR 和 Node.js 没有太大的可比性。ROR 是一个基于 Ruby 的 Framework。而 Node.js 可以算作一个 interpreter。但如果 Node.js 社区搞出个类似 ROR 的 Framework,我估计风暴就要来临了。

#8 楼 @suriv http://expressjs.com/ 有个类 sinatra 的

前端写 js 已经把我折磨够了,后端是绝对不会想用这个语言。事件驱动可以参考。

#9 楼 @Rei 哈哈对一般后端开发人员来说的确不了解 JS。但只要对了解 JS 语言的话,其实也不算太糟。如果你尝试一下 Node.js 的性能,绝对会对它刮目相看的。我当时简单的测试了一下,基本上 Nginx 的上万并发对 Node.js 来说在一个水准。但如果换成 ROR,早就连进程都跑崩了。

#10 楼 @suriv 我从没有把我自己定位成后端开发,是 js 这个语言确实糟糕(http://wtfjs.com/),我不会因为浏览器环境没有别的选择而催眠自己这个语言其实很好。

性能问题是多么奢侈,遇到性能问题那天我肯定会放鞭炮的,因为说明应用火了。

#8 楼 @suriv 比 expressjs 更类似 rails 的,有个叫 Tower 的: http://towerjs.org

其实吧,妄图用一种语言或者框架解决所有问题,很傻很天真吧?元方,你怎么看?

这个不能比吧,根本就不是一个东西。

比性能,Nodejs 也不见得有多么出色,只是跑 Hello,world 的话,Python 有一个 Web server 也能达到那个水平,Go 和 Erlang 就不用说了。 Nodejs 会火,我认为主要是语言就是 js,这个满足了大部分前端人员的后端梦想,不用去学一门新的语言,也可以完成后端应用。

#14 楼 @SErHo Nodejs会火,我认为主要是语言就是js,这个满足了大部分前端人员的后端梦想 附议

Front-end JavaScript engineers could be used for back-end code, and the two teams were actually merged into one

不同意这句话,我觉得即使同样使用 JS,编程的思路也是不同的

#16 楼 @HungYuHei 确实不一样,不过总有人以为只要语言整齐划一就没事了,期待各种吐槽

需要 登录 后方可回复, 如果你还没有账号请 注册新账号