在弹性豆茎上运行 mongo 并连接到它 - 利弊?
Posted
技术标签:
【中文标题】在弹性豆茎上运行 mongo 并连接到它 - 利弊?【英文标题】:Running mongo on elastic beanstalk and connecting to it - pros and cons? 【发布时间】:2020-07-24 08:23:51 【问题描述】:我有一个 3 层应用程序。我的问题与 aws 上的 spring boot rest api 中间层和 mongodb 后端有关。 我正在考虑在弹性 beantalk/单容器选项中运行 mongodb docker 容器,以扩展后端。
我的 rest api 将作为 docker 容器在单独的弹性 beanstalk 环境中运行。
我的理解是弹性 beanstalk 将根据需要扩展 dockerized mongodb 服务。
高级架构:
前端 - Angular - s3 静态网站托管
中间层 - 3 个 Spring Boot 休息服务 - 3 个独立的环境,其中单个容器 docker 使用弹性 bean stalk 进行缩放。
后端 - Mongodb - 使用弹性豆茎扩展的单个 Docker 容器。
问题:
Qn:这行得通吗?每一层都会扩展吗?休息服务能连接到数据库吗?这要花多少钱?中间层和后端之间会有太多延迟吗?
Qn:这是否是出于某种原因的鲁莽追逐,有一些我没有看到的障碍?我对这种方法的研究几乎没有产生任何结果。有人会阻止甚至尝试这个吗? :)
注意事项:
弹性豆茎似乎以稍高的成本提供了便利。我愿意接受,因为我只是在测试。 Kubernetes/docker swarm 看起来过于复杂和耗时,因为我需要在短期内专注于应用程序功能。
我应该能够将卷映射到 aws 中的物理位置。猜测弹性块存储或 EFS。有什么优缺点或更好的选择吗?
我知道我可以使用薄罐来提高效率。
我已经使用部署在 EC2 上的 mongodb 对其进行了测试。我应该能够将其设置为工作启动配置和自动缩放组。但我认为它会更贵,而且可能需要更多的工作。
【问题讨论】:
【参考方案1】:我不确定您所说的“使用弹性 bean stalk 扩展的单个 Docker 容器”是什么意思,但如果您打算启动更多运行 MongoDB 的容器,实际情况比这要复杂一些。
虽然 MongoDB 确实可以水平扩展,但当在副本集拓扑中启动新节点时,它会:
必须添加到副本集配置中 需要拥有其他节点已经同步到其上的数据有一些工具可以同时满足这两个要求,但仅仅启动另一个容器是不够的。
分片集群更加复杂,因为需要将一个节点分配到一个分片中,因此需要做出两个级别的管理决策。
我需要在近期专注于应用功能。
您可以考虑使用 MongoDB Atlas,它将为您处理所有这些问题。有一个free tier 可用。
【讨论】:
同意。管理可扩展的数据库是一项繁重的工作,并且需要大量的知识才能避免麻烦。如果您需要专注于业务逻辑,将其卸载到平台上正是正确之举。以上是关于在弹性豆茎上运行 mongo 并连接到它 - 利弊?的主要内容,如果未能解决你的问题,请参考以下文章