没有合适的资源?快使用搜索试试~ 我知道了~
NodeJS体系架构-单线程事件循环
0 下载量 72 浏览量
2021-01-27
15:29:32
上传
评论
收藏 322KB PDF 举报
温馨提示
试读
5页
在开始学习NodeJS编程示例前,了解NodeJS的体系架构是十分重要的。我们将要讨论,Node JS的底层工作原理是什么,它遵循怎样的处理模型,以及它是如何使用单线程模型处理来自客户端的并发请求。之前提到,NodeJS应用使用“单线程事件循环模型”(SingleThreadedEvent LoopModel)处理来自客户端的多并发请求。现在有很多的Web应用开发技术,例如JSP,SpringMVC,ASP.NET,HTML,Ajax,jQuery等。但是所有的
资源详情
资源评论
资源推荐
NodeJS体系架构体系架构-单线程事件循环单线程事件循环
Node JS体系架构
在开始学习Node JS编程示例前,了解Node JS的体系架构是十分重要的。我们将要讨论,Node JS的底层工作原理是什么,
它遵循怎样的处理模型,以及它是如何使用单线程模型处理来自客户端的并发请求。
Node JS 单线程事件循环模型
之前提到,Node JS应用使用“单线程事件循环模型”(Single Threaded Event Loop Model)处理来自客户端的多并发请求。
现在有很多的Web应用开发技术,例如JSP,Spring MVC,ASP.NET,HTML,Ajax,jQuery等。但是所有的这些技术都是
遵循“多线程请求/响应”(Multi-Threaded Request-Response)的结构去处理来自客户端的多并发请求。
由于“多线程请求/响应“结构已经在大量的web应用框架中使用,因此我们应该已经对其有所了解。但是为什么Node JS却选择
了与这些框架不同的体系结构呢。多线程结构和单线程事件循环结构的主要区别是什么呢。
任何一个开发者都可以轻松的学会Node JS并使用它开发程序。但是如果不了解Node JS的内部机制,则将会无法更好地设计
和开发Node JS应用。因此在开发前,有必要先了解Node JS平台的内部机理。
Node JS 平台
Node JS平台使用“单线程事件循环模型”处理来自客户端的多并发请求。但是它是如何在不使用多线程的请胯下处理多并发请
求呢?事件循环模型又是什么呢。我们将逐一进行讲解。
在讨论“单线程事件循环模型”之前,首先来回顾下“多线程请求-响应”结构。
传统的Web应用处理模型
当今大多数未使用Node JS进行开发的Web应用,基本上都是遵循“多线程请求-响应”结构,简称为”请求/响应模
型“(Request/Response Model)。
客户端将请求发送给服务端,服务端根据请求进行处理,准备响应(数据),并将其返回给客户端。
这个模型使用HTTP协议。由于HTTP是无状态协议,因此”请求/响应模型“也是无状态的模型。所以我们又可以称其为”无状态
请求/响应模型“(Request/Response Stateless Model)。
简而言之,这个模型使用的是多线程来处理客户端的多并发请求。在讨论其内部机理前,我们先通过下面的图进行概览。
”请求/响应模型“的处理步骤
客户端向服务端发送请求
Web服务端在内部维护一个有个数限制的线程池,为客户端的请求提供服务
Web服务端循环监听来自客户端的请求
Web服务端收到请求
Web服务端选择一个客户端请求
从线程池(Thread pool)选择一个线程(Thread)
将该线程分配给刚选择的请求
该线程将会负责读取,处理客户端请求,执行任何I/O阻塞的操作(如果需要的话),以及准备响应的内容
该线程将准备就绪的响应发送给Web服务端
Web服务端依次将响应回执给客户端
服务器采用无线循环监听客户端的请求,针对所有的客户端请求执行上述的所有步骤。这意味着对于每一个客户端请求,该模
型(请求/响应模型)都要为其创建一个线程。
如果更多的客户端请求需要I/O阻塞操作的化,那么所有的线程将在准备响应阶段处于繁忙状态。这就意味着后续的客户端请
求需要等待更长的时间才能得到响应。
weixin_38689736
- 粉丝: 5
- 资源: 932
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0