随着 docker 以及 Amazon ECS 等调度和编排服务的出现,我正在尝试确定部署 Node API 的最佳方式。除了 Docker 和 ECS,我想利用 Node 集群库,通过创建一个主进程和多个工作处理器来优雅地处理在文档中建议的异步错误事件中节点应用程序的崩溃。
除了优雅地处理错误之外,集群方法的好处之一是为每个可用的 CPU 创建一个工作处理器。但这在 docker 世界中有意义吗?在一个 Docker 容器中运行多个节点进程是否有意义,该容器将被扩展到 ECS 上的 EC2 实例集群中?
如果没有 Node 集群方法,我将失去优雅处理错误的能力,因此我认为至少应该为每个 docker 容器运行一个主进程和一个工作进程。我仍然对在 ECS 的任务定义中定义多少 CPU 感到困惑。ECS 文档说明了每个容器实例每个 CPU 有 1024 个单元;但这与 EC2 计算单元不同,是吗?话虽如此,我需要选择具有适当数量的 vCPU 的 EC2 实例类型来实现这一点吗?
我知道实现最佳配置可能需要对我的特定 Node API 应用程序进行某种程度的基准测试,但如果能更好地了解从哪里开始,那就太棒了。也许我需要做一些学习/研究?任何指导我的路径或建议的指针将不胜感激!
编辑:回顾一下我的具体问题:
如此处所述在docker 容器内运行主/从集群以实现优雅崩溃是否有意义?
使用集群文档中描述的几乎相同的代码来“扩展”到可用的 CPU 是否有意义
require('os').cpus().length
?亚马逊在 ECS 任务定义的文档中是什么意思,它对
cpus
设置说,acontainer instance has 1024 units per CPU
?这个设置的一个好的起点是什么?将实例类型用于 ECS 集群的一个好的起点是什么,该集群旨在为基于上述内容的节点 API 提供服务?可用的 vCPU 对前面的问题有何影响?