docker 上的微服务 - 架构
Microservices on docker - architecture
我正在使用 docker 构建一个微服务项目。
我的一个微服务是一个监听器,它应该从各种来源获取数据。
我想要实现的是能够动态地开始和停止从源获取数据。
例如在这张图中,我有 3 个源连接到 3 个 dockers。
我的问题开始是因为我需要在新源可用时创建另一个 docker 实例。在此示例中,假设源 #4 现在可用,我需要获取他的数据(我知道新源何时可用)但我希望它自动缩放(使用源 #4 信息进行收听)
我想出了两个解决方案,各有优缺点:
1) 创建一个包含大量 docker 运行 侦听器服务的 docker 池,每次有新源可用时发送一条消息(使用 rabbitmq 但我认为不太相关)到可用的 docker 开始获取数据。
在这个解决方案中,我有点担心 docker 图像 运行 无缘无故的内存消耗 - 但它不是一个非常复杂的解决方案。
2) 每当有新源可用时,创建一个新的 docker(具有不同的环境变量)
使用此解决方案,我在创建 docker 时遇到了问题。
此刻我已经实现了这一点,但是启动 dockers 的服务(我们称之为管理器)只是一个在同一台服务器上执行命令的常规 nodejs 应用程序 - 我需要它在里面还有一个 docker 容器。
所以这里的问题是我无法从主 docker 创建一个 ssh 连接来创建我的新 Docker.
我不太确定我的两个解决方案是否都在轨道上,非常感谢对我的问题提出的任何建议。
你的问题有点不清楚,但如果你只想水平扩展服务,你应该研究一种容器编排技术,它可以让你做到这一点 - 例如 Kubernetes
。我建议阅读 introduction.
要添加额外的服务容器,您需要做的就是在 Deployment
配置中更新所需 replicas
的数量。有关详细信息,请阅读 this。
使用 kubernetes(或简称 k8s),除了水平可伸缩性之外,您还将受益于部署自动化、自我修复和服务发现以及负载平衡功能。
还有其他编排方案(例如 Docker Swarm),但我建议先研究一下 kubernetes。
让我知道这是否解决了您的问题,或者您是否有其他要求在您的原始问题中不是很清楚。
您后续问题的链接:
我正在使用 docker 构建一个微服务项目。
我的一个微服务是一个监听器,它应该从各种来源获取数据。
我想要实现的是能够动态地开始和停止从源获取数据。
例如在这张图中,我有 3 个源连接到 3 个 dockers。
我的问题开始是因为我需要在新源可用时创建另一个 docker 实例。在此示例中,假设源 #4 现在可用,我需要获取他的数据(我知道新源何时可用)但我希望它自动缩放(使用源 #4 信息进行收听)
我想出了两个解决方案,各有优缺点:
1) 创建一个包含大量 docker 运行 侦听器服务的 docker 池,每次有新源可用时发送一条消息(使用 rabbitmq 但我认为不太相关)到可用的 docker 开始获取数据。
在这个解决方案中,我有点担心 docker 图像 运行 无缘无故的内存消耗 - 但它不是一个非常复杂的解决方案。
2) 每当有新源可用时,创建一个新的 docker(具有不同的环境变量)
使用此解决方案,我在创建 docker 时遇到了问题。 此刻我已经实现了这一点,但是启动 dockers 的服务(我们称之为管理器)只是一个在同一台服务器上执行命令的常规 nodejs 应用程序 - 我需要它在里面还有一个 docker 容器。
所以这里的问题是我无法从主 docker 创建一个 ssh 连接来创建我的新 Docker.
我不太确定我的两个解决方案是否都在轨道上,非常感谢对我的问题提出的任何建议。
你的问题有点不清楚,但如果你只想水平扩展服务,你应该研究一种容器编排技术,它可以让你做到这一点 - 例如 Kubernetes
。我建议阅读 introduction.
要添加额外的服务容器,您需要做的就是在 Deployment
配置中更新所需 replicas
的数量。有关详细信息,请阅读 this。
使用 kubernetes(或简称 k8s),除了水平可伸缩性之外,您还将受益于部署自动化、自我修复和服务发现以及负载平衡功能。
还有其他编排方案(例如 Docker Swarm),但我建议先研究一下 kubernetes。
让我知道这是否解决了您的问题,或者您是否有其他要求在您的原始问题中不是很清楚。
您后续问题的链接: