我有一个 NodeJS API,它可以执行基本的操作(例如操作数据库),但也可以执行不太频繁的计算繁重的操作,例如视频编码。
从可扩展性的角度来看,似乎更好的解决方案是将其拆分为主要 API 服务器和单独的工作人员来完成繁重的工作。这样我就有了两个池,“低成本”的主要 API 和“昂贵”的工作线程,从而实现更好的资源管理。
这种模式有标准方法吗?
处理不频繁的繁重请求的唯一方法似乎是从头开始编写工作服务器或创建子进程。这些选项需要大量额外的代码(包括池化、排队等),而且问题似乎很常见,因此缺少 Node 工作程序包表明我的方法既是已知的又是错误的。
最佳答案
不确定这是否是服务器故障的问题,但这里是: Node 因计算量大而臭名昭著,因为它工作在单线程模型上。我建议您使用以下替代方案之一:
- 像您提到的那样隔离nodejs工作人员,但您需要在上面有一个层来委派任务
- 在接受 HTTP 请求的“下游服务”中完成昂贵的工作。您的 Node 服务器现在可以连接到这些服务器并在工作完成后接收异步响应。
- 现在,下游服务可以使用以下语言编写:(a) 像 Java 这样的线程密集型语言,它允许繁重的计算工作,(b) 大量旋转的 Node 进程或按需旋转,(c) 专有的计算基础设施,如 Amazon Lambda
关于node.js - 将计算繁重的任务与基于 Nodejs 的 API 分开的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45776275/