node.js - 使用 Docker 扩展微服务

标签 node.js meteor amazon-ec2 docker microservices

我已经创建了一个 Node.js (Meteor) 应用程序,并且正在研究 future 处理扩展的策略。我已将我的应用程序设计为一组微服务,现在我正在考虑在生产中实现它。

然而,我想做的是在一个服务器实例上运行许多微服务,以在它们使用少量资源时最大限度地利用资源。我知道容器对此很有用,但我很好奇是否有一种方法可以创建动态缩放的容器集:

  • 编写命令,例如“如果运行此应用的容器达到 > 80% CPU/其他限制指标,则在此服务器上提供另一个应用容器”,
  • 如果需要额外的容器,提供和准备其他服务器,
  • 负载平衡这些容器之间的连接(这是否会影响服务器负载平衡,例如,向容器较少的服务器发送较少的连接?)

我研究了 AWS EC2、Docker Compose 和 nginx,但我不确定我的方向是否正确。

最佳答案

研究 Kubernetes 和/或 Mesos,您将永远不会回头。它们是为您想要做的事情量身定制的。您应该关注的两个组成部分是:

  1. 服务发现:这允许相互依赖的服务(微服务“A”调用“B”)相互“发现”。它通常使用 DNS 完成,但在其之上具有注册功能,可以处理实例扩展时发生的情况。

  2. 调度:在 Docker 领域,调度与 CRON 作业无关,它意味着容器如何扩展并以各种方式“打包”到服务器中以最大限度地有效利用可用资源.

这里实际上有几十种选择:Docker Swarm、Rancher 等也是相互竞争的选择。亚马逊等许多云供应商也提供具有这些功能的专用服务(如 ECS)。但 Kubernetes 和 Mesos 正在成为标准选择,所以如果你至少从那里开始,你就会成为一个很好的伙伴。

关于node.js - 使用 Docker 扩展微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36144330/

相关文章:

mysql - 我们可以将 Meteor 框架与 mysql 数据库一起使用吗

javascript - meteor :在不注销的情况下更改用户密码?

javascript - Meteor.js/javascript iPhone 点击输入延迟

.htaccess - 为什么这个 .htaccess 重定向不起作用?

node.js - iOS & node.js : how to verify passed access token?

javascript - Angular2/TypeScript 和 HTTP : How to attach object to component?

amazon-web-services - 我可以找出 Elastic Load Balancer 当前使用的实例吗?

java - 我的程序中出现 "OutOfMemoryError: Java Heap Space"错误

javascript - 迭代脚本的内存消耗

node.js - MongoDB - 错误 : document must have an _id before saving