我已经创建了一个 Node.js (Meteor) 应用程序,并且正在研究 future 处理扩展的策略。我已将我的应用程序设计为一组微服务,现在我正在考虑在生产中实现它。
然而,我想做的是在一个服务器实例上运行许多微服务,以在它们使用少量资源时最大限度地利用资源。我知道容器对此很有用,但我很好奇是否有一种方法可以创建动态缩放的容器集:
- 编写命令,例如“如果运行此应用的容器达到 > 80% CPU/其他限制指标,则在此服务器上提供另一个应用容器”,
- 如果需要额外的容器,提供和准备其他服务器,
- 负载平衡这些容器之间的连接(这是否会影响服务器负载平衡,例如,向容器较少的服务器发送较少的连接?)
我研究了 AWS EC2、Docker Compose 和 nginx,但我不确定我的方向是否正确。
最佳答案
研究 Kubernetes 和/或 Mesos,您将永远不会回头。它们是为您想要做的事情量身定制的。您应该关注的两个组成部分是:
服务发现:这允许相互依赖的服务(微服务“A”调用“B”)相互“发现”。它通常使用 DNS 完成,但在其之上具有注册功能,可以处理实例扩展时发生的情况。
调度:在 Docker 领域,调度与 CRON 作业无关,它意味着容器如何扩展并以各种方式“打包”到服务器中以最大限度地有效利用可用资源.
这里实际上有几十种选择:Docker Swarm、Rancher 等也是相互竞争的选择。亚马逊等许多云供应商也提供具有这些功能的专用服务(如 ECS)。但 Kubernetes 和 Mesos 正在成为标准选择,所以如果你至少从那里开始,你就会成为一个很好的伙伴。
关于node.js - 使用 Docker 扩展微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36144330/