与 Ruby 相比,NodeJS 有哪些优势?

2015-02-27 13:04:18 +08:00
 esyed

对于前端转后端的童鞋来说,可以直接用前端语言写后台,这个是优势
对于其他童鞋来说,用NodeJS有啥优势呢?
有什么非用Node不可的理由么?

13501 次点击
所在节点    程序员
92 条回复
scarecrow
2015-02-27 15:18:36 +08:00
又是语言之争,没有最好的只有最合适的。

ruby 优雅灵活,一旦喜欢上让人欲罢不能

nodejs 前后端一套解决方案,用着省心。

顺便说一句,相比性能,开发效率,快速验证想法更重要是,很多产品还轮不到你考虑性能问题的时候就挂了,性能问题只是意淫而已。
kleetaurus
2015-02-27 15:27:55 +08:00
Node.JS的优势:
1. JS通吃前后端,学习语言的时间成本比较低;
2. 处理效率非常高(基于Google v8引擎、非阻塞I/O)。
dalang
2015-02-27 15:46:20 +08:00
@esyed 楼主明确了 ‘与 ruby 相比’,在资源占用上 node 还是很有优势的。
dalang
2015-02-27 15:49:24 +08:00
@alsotang 性能瓶颈比较常见的还是 IO 性能
tabris17
2015-02-27 16:11:51 +08:00
学习成本低
hahastudio
2015-02-27 16:18:19 +08:00
Node.js 让不会区分语言、框架的人也能用
loading
2015-02-27 16:19:55 +08:00
@typcn 233,你认识雷锋吗?去过雷峰塔?
miyuki
2015-02-27 16:23:58 +08:00
会 javascript 的可以很快,不,立即上手
robertlyc
2015-02-27 16:24:11 +08:00
一个回调 就抹平了性能优势

开发效率才是优势
otakustay
2015-02-27 17:24:59 +08:00
@esyed 同运维环境下,进行相同简单的优化,node的IO比java的nio强应该是没问题的

我的意思就是,不要node就放那跑,而java从代码到jvm等一系列优化全用上去比。我们假设都是一个相关领域做了2-3年的人来做这事,node的IO超java是妥的
alsotang
2015-02-27 18:27:35 +08:00
@Mirana node上1000个并发请求只要有一个挂了,剩下999个也都挂了。
esyed
2015-02-27 18:54:37 +08:00
@kleetaurus JS是门非常丑陋的语言
esyed
2015-02-27 19:13:47 +08:00
@66beta 为何地址java?
@alsotang node这么弱啊?如何处理这种情况呢?
@robertlyc node开发效率很低么?
@dalang 不是说node很耗内存么?
@scarecrow 验证想法,用A语言开发一个版本,成功后,改用B语言,这样的案例不多吧?
@jprovim 前端上手node也不快的吧,如果说快,只是他用过JS,不是说ruby是小白的最爱么?不过这说法好像是骗人的,小白根本玩不动ruby的...
@youxiachai 难道你不觉得JS设计很渣么?
scarecrow
2015-02-27 19:53:16 +08:00
@esyed 例子不少,比较知名的,twitter 当初都是使用ruby后来部分架构调整为java

linkin 当初也使用ruby 后来转向nodejs
joyee
2015-02-27 21:21:28 +08:00
从 Ruby on Rails 转移到 Node.js 的 Linkedin 就有给出过他们转移的理由……摘录一下

How LinkedIn used Node.js and HTML5 to build a better, faster app
http://venturebeat.com/2011/08/16/linkedin-node/

概括:Linkedin 的移动端服务器完全迁移到了 Node.js 上,主要是规模优势+I/O优势,用ROR的时候15台服务器,每台机子15个instance,转移到Node之后每台4个instance,并且能够处理的流量翻倍。

Ruby on Rails vs. Node.js at LinkedIn
http://www.infoq.com/news/2012/10/Ruby-on-Rails-Node-js-LinkedIn

概括:这篇的数据是Node.js某些场景下快20x倍,从30台服务器缩减到3台,前后端团队可以合并提高开发效率。Linkedin的性能提升一部分是因为原来用Rails写的服务器用的技术太老(虽然当时是前沿)加设计不合理,单线程还阻塞的的Mongrel在需要跨数据中心做请求的情况下内存泄漏得跟筛子一样。另外指出拿Node.js和ROR比不太合理,一个是low-level的服务器,一个是完整的web框架
joyee
2015-02-27 21:25:26 +08:00
和Java比较的话,Paypal的经验比较有说服力,因为他们不是重写(毕竟不管换不换技术一般重构都会带来提升的),而是Java和Node同时开发一个系统,最后选择了Node

Node.js at PayPal
https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
1. 降低前后端沟通成本,方便培养全栈工程师
2. 一开始只在原型使用 Node.js,效果很好,于是后来直接应用于生产环境
3. 一开始 express 路由 + nconf 配置 + grunt 构建,但 express 写法太灵活缺乏一致性不适合多团队环境,造了一个 Kraken.js 帮助大型团队进行开发

最初应用于生产环境是流量最高之一的账户概览页面,安全起见 Java 和 Node.js 两个版本同时开发。

开发速度:
Java 团队5人,Node 团队2人,Node 团队在延迟2个月才开始的情况下3个月内赶上 Java 团队的开发进度:
* 在人数更少的情况下,Node开发速度是Java的两倍
* 代码量少了33%
* 文件数目少了40%

性能:
Java使用基于Spring自创的框架,Node使用自创的Kraken.js和express,dust.js以及其他开源库,3条路由,每条大约包含2~5个API请求
* 每秒完成的请求数是Java的两倍
* 响应时间快了35%

这篇有更详细的介绍
How Paypal is being revolutionized by Node.js & Lean UX
http://www.nearform.com/nodecrunch/release-the-kracken-how-paypal-is-being-revolutionized-by-node-js-and-lean-ux/


其他一些比较有趣的 War Story:

How We Built eBay's First Node.js Application
http://www.ebaytechblog.com/2013/05/17/how-we-built-ebays-first-node-js-application/#.VPBikeEc9-W

Node.js + Cocktails: Scaling Yahoo!
http://finance.yahoo.com/video/node-js-cocktails-scaling-yahoo-051216550.html
esyed
2015-02-27 21:30:29 +08:00
@joyee Node 团队在延迟2个月才开始的情况下3个月内赶上 Java 团队的开发进度, 是Node高手打败Java菜鸟么? 貌似Java开发体系还是很完善的,Node工具很多是渣,赶上是小概率事件吧?
joyee
2015-02-27 21:55:38 +08:00
@esyed 主要是Node确实适合快速迭代开发的模式,http://www.nearform.com/nodecrunch/release-the-kracken-how-paypal-is-being-revolutionized-by-node-js-and-lean-ux/里面就有提到Node团队3天内就用Node+bootstrap初步实现了David Marcus给他们打的草稿(用过Node的都很好想象Node干这种事情有多快……),接着进入快速迭代的阶段,不断地测试,接受反馈,改进。相比之下Java团队笨重得多,等他们搞完了controller层跑起来的时候,Node团队已经实现了最初的功能了。

另外个人参与过J2EE项目的前端开发,这种项目如果前端业务复杂度比较高的话后端的程序员很难独自搞定前端开发,必然要有专业的前端,分开前后端团队,这样就增加了一层沟通成本,也会拖慢项目进度。而Node的好处之一也是前后端可以一个团队完成,降低沟通成本
joyee
2015-02-27 22:06:40 +08:00
@esyed 虽然Node社区确实良莠不齐,不过好用的那些确实好用,如果工程师水平足够高的话,没有好用的也能自己造。像Paypal也提到了Express不适合大团队开发,他们就在上面再搞了个Kraken.js方便大团队合作,他们还fork了dust.js,为自己的业务改进。本来他们的Java团队也是自己在Spring上面再定制了一个框架的,大公司有造轮子的能力的话,工具啊开发体系啊这些并不是大问题……
joyee
2015-02-27 22:16:23 +08:00
@esyed 还有就是,不太可能是Node.js高手 v.s. Java菜鸟,毕竟Paypal用了多少年的Java,而当时Node才诞生不到三年……又是年收入 $3.5 Billion 的 checkout 系统,更不可能交给菜鸟玩了……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/173185

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX