node.js适合什么网站?

节点的特征:

它是一个Javascript运行时环境。

依靠Chrome V8引擎进行代码解释

事件驱动

非阻塞输入输出

轻量级和可伸缩性,适合实时数据交互应用。

单一进程、单一线程

NodeJS的缺点:

1.不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要有:由于JavaScript单线程,如果有长时间运行的计算(比如大循环),CPU时间片不会释放,后续I/O不会发起;

解决方案:将一个大的操作任务分解成几个小的任务,使操作能够及时释放,而不会阻塞I/O调用的发起;

2.只支持单核CPU,不能充分利用CPU。

3.可靠性低,一旦代码某个环节崩溃,整个系统崩溃。

原因:单进程、单线程

解决方案:

(1)Nnigx反向代理,负载均衡,开放多个进程,绑定多个端口;

(2)启动多个进程监听同一个端口,使用集群模块;

4.开源组件库质量参差不齐,更新快,向后不兼容。

5.调试不方便,错误中也没有堆栈痕迹。

NodeJS的应用场景:

实时应用:如在线聊天、实时通知推送等(如socket.io)。

分布式应用:通过高效的并行I/O使用现有数据。

工具应用:大量的工具,从前端压缩部署(比如grunt)到桌面图形界面应用。

游戏应用:游戏领域对实时性和并发性要求较高(如网易的pomelo框架)。

NodeJS不适合这个场景:

对于CPU使用量大,IO使用量小的应用,比如视频编码,人工智能,Node.js的优势发挥不了一个简单的Web应用。这些应用的特点是流量低,物理架构简单,Node.js无法提供像Ruby的Rails或者Python的Django这样强大的框架。