Nodejs的运行原理-科普篇 (9)

Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。我们来看一个简单的例子 Java PHP 这类语言中每个连接都会生成一个新线程每个新线程可能需要 2 MB 的配套内存在一个拥有 8 GB RAM 的系统上理论上最大的并发连接数量是 4,000 个用户随着您的客户群的增长如果希望您的 Web 应用程序支持更多用户那么您必须添加更多服务器所以在传统的后台开发中整个 Web 应用程序架构包括流量处理器速度和内存速度中的瓶颈是服务器能够处理的并发连接的最大数量这个不同的架构承载的并发数量是不一致的
Node的出现就是为了解决这个问题更改连接到服务器的方式Node 声称它不允许使用锁它不会直接阻塞 I/O 调用。Node在每个连接发射一个在 Node 引擎的进程中运行的事件而不是为每个连接生成一个新的 OS 线程并为其分配一些配套内存)。

 

缺点

如上所述,nodejs的机制是单线程这个线程里面有一个事件循环机制处理所有的请求在事件处理过程中它会智能地将一些涉及到IO、网络通信等耗时比较长的操作交由worker threads去执行执行完了再回调这就是所谓的异步IO非阻塞吧但是那些非IO操作只用CPU计算的操作它就自己扛了比如算什么斐波那契数列之类它是单线程这些自己扛的任务要一个接着一个地完成前面那个没完成后面的只能干等因此CPU要求比较高的CPU密集型任务多的话就有可能会造成号称高性能适合高并发的node.js服务器反应缓慢

 

适合场景

1、RESTful API

这是适合 Node 的理想情况,因为您可以构建它来处理数万条连接。它仍然不需要大量逻辑;它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的 API 需求。

2、实时程序

比如聊天服务

聊天应用程序是最能体现 Node.js 优点的例子:轻量级、高流量并且能良好的应对跨平台设备上运行密集型数据(虽然计算能力低)。同时,聊天也是一个非常值得学习的用例,因为它很简单,并且涵盖了目前为止一个典型的 Node.js 会用到的大部分解决方案。

3、单页APP

ajax很多。现在单页的机制似乎很流行,比如phonegap做出来的APP,一个页面包打天下的例子比比皆是。

 

总而言之,NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwpjf.html