使用Docker扩展微服务

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

然而,我想要做的是在一个服务器实例上运行许多微服务,以便在使用less量资源的同时最大限度地利用资源。 我知道容器是有用的,但我很好奇,如果有一种方法来创build一个dynamic缩放集合的地方,我可以:

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

我已经研究过AWS EC2,Docker Compose和nginx,但是我不确定我是否正确地朝着正确的方向前进。

调查Kubernetes和/或Mesos,你永远不会回头。 他们是为你想要做的事情量身定制的。 您应该关注的两个组件是:

  1. 服务发现:这允许相互依赖的服务(微服务“A”呼叫“B”)彼此“发现”。 这通常是使用DNS完成的,但是在其上面的注册function可以处理实例缩放时会发生的情况。

  2. 调度:在Docker-land中,调度不是关于CRON作业,它意味着容器如何以各种方式缩放和“打包”到服务器中,以最大限度地利用可用资源。

实际上有几十个选项:Docker Swarm,Rancher等也是竞争的select。 亚马逊等许多云供应商也提供具有这些function的专用服务(如ECS)。 但是Kubernetes和Mesos正在成为标准select,所以如果你至less在那里开始,你会成为一个好公司。

度量标准可以通过Docker API (和酷博客文章 )收集,通常用于此。 修补DAPI和docker堆栈工具(撰写/群/机器)可以提供很多工具来有效地扩展微服务架构。

我可以build议Consul在这种资源感知系统中pipe理发现。