node.js - 将计算繁重的任务与基于 Nodejs 的 API 分开的推荐方法是什么?

标签 node.js api scalability

我有一个 NodeJS API,它可以执行基本的操作(例如操作数据库),但也可以执行不太频繁的计算繁重的操作,例如视频编码。

从可扩展性的角度来看,似乎更好的解决方案是将其拆分为主要 API 服务器和单独的工作人员来完成繁重的工作。这样我就有了两个池,“低成本”的主要 API 和“昂贵”的工作线程,从而实现更好的资源管理。

这种模式有标准方法吗?

处理不频繁的繁重请求的唯一方法似乎是从头开始编写工作服务器或创建子进程。这些选项需要大量额外的代码(包括池化、排队等),而且问题似乎很常见,因此缺少 Node 工作程序包表明我的方法既是已知的又是错误的。

最佳答案

不确定这是否是服务器故障的问题,但这里是: Node 因计算量大而臭名昭著,因为它工作在单线程模型上。我建议您使用以下替代方案之一:

  1. 像您提到的那样隔离nodejs工作人员,但您需要在上面有一个层来委派任务
  2. 在接受 HTTP 请求的“下游服务”中完成昂贵的工作。您的 Node 服务器现在可以连接到这些服务器并在工作完成后接收异步响应。
  3. 现在,下游服务可以使用以下语言编写:(a) 像 Java 这样的线程密集型语言,它允许繁重的计算工作,(b) 大量旋转的 Node 进程或按需旋转,(c) 专有的计算基础设施,如 Amazon Lambda

关于node.js - 将计算繁重的任务与基于 Nodejs 的 API 分开的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45776275/

相关文章:

apache-kafka - 每个生产者的 Kafka 主题

database - 关于连接到 Postgres 数据库的首选方式的问题

javascript - MongoDB 获取最后一个元素不能与 node.js 一起正常工作

node.js - Node js 计数器值不会增加

node.js - 有没有人在 node/socket.io 中成功实现了动态命名空间?

api - 强制 docusign 对客户端服务器进行 API 调用

mysql - 用于只读网站的 SQLite 或 MySQL?

node.js - 我们如何将winston日志写入SQL Server?

javascript - Jquery Ajax API错误: 400 Bad Request

xml - .Net Core 2 接受返回 406 的 XML header