gpt4 book ai didi

node.js - docker 上的微服务 - 架构

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:53 24 4
gpt4 key购买 nike

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

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

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

architecture

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

我的问题开始是因为当新的源可用时我需要创建另一个 docker 实例。在这个例子中,假设源 #4 现在可用,我需要获取他的数据(我知道新源何时可用),但我希望它自动缩放(使用源 #4 信息进行监听)

我提出了两种解决方案,每种方案都有优点和缺点:

1)创建一个由大量运行监听器服务的 docker 组成的 docker 池,每次有新的源可用时,都会向可用的 docker 发送一条消息(使用rabbitmq,但我认为不太相关)以开始获取数据。

在这个解决方案中,我有点担心无缘无故运行的 docker 镜像的内存消耗 - 但这不是一个非常复杂的解决方案。

2) 每当有新的源可用时,创建一个新的 docker(具有不同的环境变量)

使用这个解决方案,我在创建 docker 时遇到问题。目前我已经实现了这一点,但是启动 docker 的服务(我们称之为管理器)只是一个在同一服务器上执行命令的常规 Nodejs 应用程序 - 而且我也需要它位于 docker 容器内。

所以这里的问题是我无法从主 docker 创建 ssh 连接来创建我的新 Docker。

我不太确定我的两个解决方案是否都已步入正​​轨,并且非常感谢针对我的问题提出的任何建议。

最佳答案

你的问题有点不清楚,但如果你只是想水平扩展服务,你应该研究一种容器编排技术,它可以让你做到这一点 - 例如Kubernetes。我建议阅读introduction .

要添加其他服务容器,您所需要做的就是更新 Deployment 配置中所需的副本数量。欲了解更多信息,请阅读this

使用 kubernetes(或简称 k8s),除了水平可扩展性之外,您还将受益于部署自动化、 self 修复和服务发现以及负载平衡功能。

还有其他编排替代方案(例如 Docker Swarm ),但我建议首先研究 kubernetes。

请告诉我这是否可以解决您的问题,或者您是否还有原始问题中不太明确的其他要求。

后续问题的链接:

1 - Run kubectl commands inside container

2 - Kubernetes autoscaling based on custom metrics

3 - Env variables in Pods

关于node.js - docker 上的微服务 - 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43926591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com