繁体   English   中英

使用Docker扩展微服务

[英]Scaling microservices using Docker

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

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

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

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

调查Kubernetes和/或Mesos,你永远不会回头。 它们是根据您的目标量身定制的。 您应该关注的两个组件是:

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

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

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

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

我可以建议赞成Consul在这种资源感知系统中管理发现。

我们使用AWS来托管我们的miroservices应用程序,并使用ECS(AWS docker service)来容纳不同的API。

在此背景下,我们使用AWS自动缩放功能来管理规模和扩展。 检查一下

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM