使用Node.js 的优势和劣势都有哪些
展开全部
我用 Node.js 开发了 Am I Hacked,算是有一点用 Node.js 支持大流量的经验。先列一些数字
服务器是 Linode 512,也就是 Linode 上最低端的 VPS ,只有 512MB 的内存。
数据库,Node.js 程序和静态文件都放在同一台服务器上。
大部分查询耗时 20-100ms 。少数查询由于缓存 miss 较多,耗时会高达500ms。
最高日PV超过了一百万,Google Analytic 上显示的同时在线人数最高达2000。
平均每秒能完成20-30次查询,瓶颈在磁盘IO,CPU几乎无压力。
虽然压力如此之大,首页几乎都能在一秒内打开,查询也会在3秒内返回。
Node.js 程序占用内存 90MB-110MB,剩余内存都被磁盘缓存占据。
以我的了解,Python 和 Ruby 上的非 Event Driven 的 Framework 根本不可能达到这样的性能。
然后说说 Node.js 的其他优点
Node.js 的架构与 Django, Rails 等传统的 Framework 不同,不需要放在 Nginx / Apache 后,利用 WSGI, CGI 之类的接口一板一眼的 [接受Request] -> [运行程序逻辑] -> [生成并返回Response]。这是一个巨大的变化,之前一些无法想象的功能都有可能实现了。比如 https://github.com/Miserlou/DirtyShare 可以用浏览器实现 P2P 的文件传输。正因为 Node.js 可以更精细的控制 Request 和 Response 的时间和内容,websocket 似乎天生就是为 Node.js 而生的,而配合 http://socket.io 这个神奇的库之后,在 realtime webapp 这个领域,Node.js 已经没有对手了。
Node.js 的包管理器 npm 设计得比 python 和 ruby 好很多。有很多的 module 开发者。
当然也有一些缺点
Debug 很困难。没有 stack trace,出了问题很难查找问题的原因。
如果设计不好,很容易让代码充满 callback 。实在受不了的可以考虑一下 https://github.com/laverdet/node-fibers/ 这个项目。不过 Node.js 的核心团队并不推荐使用。
有没有大公司使用?
LinkedIn Mobile 的 服务器端完全是用 Node.js 写的。
Yahoo 有一部分新项目使用了 Node.js。
阿里巴巴内部也有一些新项目用到了 Node.js。
服务器是 Linode 512,也就是 Linode 上最低端的 VPS ,只有 512MB 的内存。
数据库,Node.js 程序和静态文件都放在同一台服务器上。
大部分查询耗时 20-100ms 。少数查询由于缓存 miss 较多,耗时会高达500ms。
最高日PV超过了一百万,Google Analytic 上显示的同时在线人数最高达2000。
平均每秒能完成20-30次查询,瓶颈在磁盘IO,CPU几乎无压力。
虽然压力如此之大,首页几乎都能在一秒内打开,查询也会在3秒内返回。
Node.js 程序占用内存 90MB-110MB,剩余内存都被磁盘缓存占据。
以我的了解,Python 和 Ruby 上的非 Event Driven 的 Framework 根本不可能达到这样的性能。
然后说说 Node.js 的其他优点
Node.js 的架构与 Django, Rails 等传统的 Framework 不同,不需要放在 Nginx / Apache 后,利用 WSGI, CGI 之类的接口一板一眼的 [接受Request] -> [运行程序逻辑] -> [生成并返回Response]。这是一个巨大的变化,之前一些无法想象的功能都有可能实现了。比如 https://github.com/Miserlou/DirtyShare 可以用浏览器实现 P2P 的文件传输。正因为 Node.js 可以更精细的控制 Request 和 Response 的时间和内容,websocket 似乎天生就是为 Node.js 而生的,而配合 http://socket.io 这个神奇的库之后,在 realtime webapp 这个领域,Node.js 已经没有对手了。
Node.js 的包管理器 npm 设计得比 python 和 ruby 好很多。有很多的 module 开发者。
当然也有一些缺点
Debug 很困难。没有 stack trace,出了问题很难查找问题的原因。
如果设计不好,很容易让代码充满 callback 。实在受不了的可以考虑一下 https://github.com/laverdet/node-fibers/ 这个项目。不过 Node.js 的核心团队并不推荐使用。
有没有大公司使用?
LinkedIn Mobile 的 服务器端完全是用 Node.js 写的。
Yahoo 有一部分新项目使用了 Node.js。
阿里巴巴内部也有一些新项目用到了 Node.js。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询