node.js - 如何在nodejs中运行长时间运行的同步操作

标签 node.js rabbitmq pm2 event-loop worker-thread

我正在为我的组织使用 Node.js 编写工资管理 Web 应用程序。在许多情况下,应用程序应涉及用于计算数字的 CPU 密集型数学计算,并且许多用户也尝试模拟执行此操作。

如果我简单地编写逻辑(抛开我已经从算法和数据结构的角度尽最大努力来控制复杂性这一事实),它将同步运行,阻塞事件循环并使请求、响应变慢。

如何解决这种情况?有哪些可能的选项可以异步执行此操作?我还想提一下,可以让这个计算内容在后台运行,稍后我可以选择通过有关状态的通知告诉用户。我在这个地方到处寻找解决方案,找到了一些解决方案,但只是理论上的,我还没有通过实现来测试它们。下面提到:

  1. 集群 Node 服务器
  2. 使用工作线程
  3. 使用备用服务器并进行一些负载平衡。
  4. 使用消息队列并将其与工作线程结合起来执行后台任务。

有人可以就这种情况向我提出一些经过考验的建议吗?还有一些与之相关的教程链接。

最佳答案

您可能想尝试 Web Workers,它易于使用且有文档记录。 https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

关于node.js - 如何在nodejs中运行长时间运行的同步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60214286/

相关文章:

node.js - Jenkins 在 Azure 上部署 NodeJS 应用程序

启动服务时RabbitMQ虚拟主机报错

python - Celery 和 RabbitMQ 配置

javascript - PM2 在运行时更改集群进程大小

reactjs - 使用 pm2 在服务器上运行 React 构建

javascript - Node 的模块 async 没有按预期工作

node.js - 如何使用 twilio 将两个匿名调用者连接在一起

javascript - 在 nw.js 中添加菜单项不会显示在 Windows 上

ubuntu - RabbitMQ:系统尚未使用 systemd 作为 init 系统 (PID 1) 启动。无法操作

node.js - 如何从启动中删除 pm2(在 mac 上)