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 请求维护作用域,以避免它与其他请求混合。

  • 如果定义了全局对象,则任何请求都可以访问它,这需要开发人员注意。

更新于: 2020年5月13日

296 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告