Node.js Web 应用架构
原文:https://www . geesforgeks . org/node-js-web-application-architecture/
Node.js 是一个基于 JavaScript 的平台,主要用于创建 I/O 密集型的 web 应用,如聊天应用、多媒体流网站等。它建立在谷歌 Chrome 的 V8 JavaScript 引擎上。web 应用程序是运行在服务器上的软件,由通过互联网访问应用程序所有资源的客户端浏览器呈现。
典型的 web 应用程序由以下组件组成:
- 客户端:客户端是指通过发出请求与服务器进行交互的用户。
- 服务器:服务器负责接收客户端请求,执行适当的任务,并将结果返回给客户端。它充当前端和存储数据之间的桥梁,允许客户端对数据执行操作。
- 数据库:数据库是存储 web 应用程序数据的地方。根据客户端的请求,可以创建、修改和删除数据。
Node.js 服务器架构:为了管理多个并发客户端,Node.js 采用了“单线程事件循环”设计。在 Node.js 处理模型中采用了基于 JavaScript 事件的模型和 JavaScript 回调机制。它采用了两个基本概念:
- 异步模型
- 不阻塞输入/输出操作
这些特性增强了 Node.js web 应用程序的可伸缩性、性能和吞吐量。
node . js 架构的组件:
- 请求:根据用户需要执行的操作,对服务器的请求可以是阻塞的(复杂的)或非阻塞的(简单的)。
- Node.js 服务器:node . js 服务器接受用户请求,进行处理,并将结果返回给用户。
- 事件队列:事件队列的主要用途是存储传入的客户端请求,并按顺序将其传递给事件循环。
- 线程池:node . js 服务器中的线程池包含可用于执行处理请求所需操作的线程。
- 事件循环:事件循环从事件队列接收请求,并将响应发送给客户端。
- 外部资源:为了处理阻塞的客户端请求,使用外部资源。它们可以是任何类型(计算、存储等)。
Nodejs 服务器的工作流程:
- 用户向服务器发送请求(阻塞或非阻塞)以执行操作。
- 请求首先在服务器端进入事件队列。
- 事件队列将请求顺序传递给事件循环。事件循环检查请求的性质(阻塞或非阻塞)。
- 事件循环处理不需要外部资源的非阻塞请求,并将响应返回给相应的客户端
- 对于阻塞请求,通过使用外部资源为完成任务的进程分配一个线程。
- 操作完成后,请求被重定向到事件循环,事件循环将响应传递回客户端。
优势:
- 通过使用事件队列和线程池,Node.js 服务器可以高效地处理大量请求。
- 不需要建立多个线程,因为事件循环一次处理一个请求,因此一个线程就足够了。
- 向 Node.js 服务器提供请求的整个过程消耗较少的内存和服务器资源,因为一次只能处理一个请求。
版权属于:月萌API www.moonapi.com,转载请注明出处