Node.js 后台工作原理 - 简要分析
Node.js 仅使用一个 JavaScript 执行线程。
问题是 - Node.js 如何处理多个 http 或其他请求,以及可能存在关于性能和安全性的问题?
Node.js 在应用程序启动时启动事件循环,并使用它来处理回调函数。Node.js 维护一个工作池。长时间运行的操作被转移到此工作池,事件池仅在任务完成后处理来自此工作池的响应。
工作池与操作系统协作,完成繁重的工作并管理任务调度。
工作池完成任务后,使用回调函数响应事件循环。
事件循环维护适当事件的执行顺序。
事件循环 -
它首先检查任何计时器事件,例如 setTimeout 或 setInterval。
其次,它检查挂起的回调函数,例如待执行的与 I/O 相关的回调函数。
下一步是轮询;Node 将尝试查找新的 I/O 以执行其回调函数。
检查阶段,在此阶段 Node 将立即执行回调函数。它使用 setImmediate 调用
关闭回调 - 最后,Node 将执行已注册的关闭回调函数。
如果没有剩余的已注册事件待执行,则 Node 才会执行 process.exit 。
Node 维护一个 ref 变量来保存事件计数器,每次有新事件时,计数器都会递增。
在服务器环境中,我们使用 createServer 创建服务器,该服务器没有关闭事件,因此除非手动停止进程,否则 Node.js 不会自动关闭它。
默认情况下,Node 为每个 http 请求维护作用域,以避免它与其他请求混合。
如果定义了全局对象,则任何请求都可以访问它,这需要开发人员注意。
广告