docker上的微服务 – 架构

我正在使用docker构build一个微服务项目。

我的一个微服务是一个应该从各种来源获取数据的监听器。

我想要实现的是启动和停止从源dynamic获取数据的能力。

建筑

例如在这幅图中,我有3个源码连接到3个docker。

我的问题开始,因为我需要创build另一个docker实例,当一个新的来源可用。 在这个例子中,让我们说源#4现在是可用的,我需要得到他的数据(我知道什么时候新的源变得可用),但我希望它被自动缩放(与源#4信息的倾听)

我想出了两个解决scheme,每个都有优点和缺点:

1)创build一个运行侦听器服务的大量docker的docker池,并且每当有新的源时,发送一条消息(使用rabbitmq,但我认为不太相关)到一个可用的docker来开始获取数据。

在这个解决scheme中,我有点担心没有理由运行Docker镜像的内存消耗,但这不是一个非常复杂的解决scheme。

2)每当有新的源代码可用时,创build一个新的docker(具有不同的环境variables)

有了这个解决scheme,我有一个创builddocker的问题。 在这一刻,我已经实现了这一点,但启动泊坞窗(让我们称之为pipe理器)的服务只是一个正常的nodejs应用程序,在同一台服务器上执行命令 – 我也需要它在docker集装箱内。

所以这里的问题是,我无法pipe理从主docker创build一个SSH连接来创build我的新的Docker。

我不太确定我的解决scheme是否按计划进行,并且非常感谢我的问题。

你的问题有点不清楚,但如果你只是想扩展一个服务水平,你应该看看容器编排技术,将允许你 – 例如Kubernetes 。 我build议阅读介绍 。

您只需添加其他服务容器就可以在Deploymentconfiguration中更新所需replicas的数量。 欲了解更多信息,请阅读。

使用kubernetes(或简称k8s),您将受益于部署自动化,自我修复和服务发现以及负载平衡function,以及横向可伸缩性。

还有其他的编排方法(比如Docker Swarm ),但是我build议先看看kubernetes。

让我知道,如果这可以解决您的问题,或者如果你有你的原始问题中不太清楚的额外要求。

您的后续问题的链接:

1 – 在容器中运行kubectl命令

2 – 基于自定义度量的Kubernetes自动调节

3 – Pod中的Envvariables