发布网友 发布时间:2022-04-26 04:55
共3个回答
热心网友 时间:2022-04-22 14:29
Node.js其实有很多大公司都在用的,比如eBay, Microsoft, 你可以去Node.js官网看看:node.js再稍微花点时间,要讲清楚这个问题,先讲讲整个Web应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈。瓶颈在于服务器能够处理的并发连接的最大数量。Node.js解决这个问题的方法是:更改连接到服务器的方式。每个连接发射一个在Node.js引擎的进程中运行的事件,而不是为每个连接生成一个新的OS线程(并为其分配一些配套内存)。Node.js不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。Node.js还宣称运行它的服务器能支持数万个并发连接Node本身运行V8 JavaScript。V8 JavaScript引擎是Google用于其Chrome浏览器的底层JavaScript引擎。Google使用V8创建了一个用C++编写的超快解释器,该解释器拥有另一个独特特征:您可以下载该引擎并将其嵌入任何应用程序。V8 JavaScript引擎并不仅限于在一个浏览器中运行。因此,Node.js实际上会使用Google编写的V8 JavaScript引擎,并将其重建为可在服务器上使用。Node.js优点:采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计。Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。3、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。
热心网友 时间:2022-04-22 15:47
可靠性低、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。不过以上缺点可以可以通过代码的健壮性来弥补。目前Node.js的网络服务器有以下几种支持多进程的方式:开启多个进程,每个进程绑定不同的端口,用反向代理服务器如 Nginx 做负载均衡,好处是我们可以借助强大的 Nginx 做一些过滤检查之类的操作,同时能够实现比较好的均衡策略,但坏处也是显而易见——我们引入了一个间接层。多进程绑定在同一个端口侦听。在Node.js中,提供了进程间发送“文件句柄” 的功能,这个功能实在是太有用了(貌似是yahoo 的工程师提交的一个patch) 。
热心网友 时间:2022-04-22 17:22
Node.js 中的容错性实在是很弱。当异步回调中出现异常,而相应的 error 的事件有没有被订阅(有时候根本不可能去订阅),那么整个进程都会挂掉。但尴尬的是,这个问题处理起来还特别难,这并不仅仅是一个 error 订阅的问题。早期的时Node.j中提出了 Domain 机制,用于隔离错误域,希望解决这个问题。但是由于很多原因(特别是下层实现机制方面的问题),导致这套机制无法像预期的那样完美运作,程序该挂还得挂。虽然有些人总是非常自信的认为自己写的代码肯定没问题,但不可否认的是目前 Node.js 程序大量使用各种第三方框架/模块,加上自己的部分,长期运行中没人敢拍胸脯保证程序不挂掉。所以 forever/pm2 之类是 Node.js 生产环境中必备的工具,用于自动重启进程。