首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用微服务体系结构进行开发,知道服务不应该共享数据?

如何使用微服务体系结构进行开发,知道服务不应该共享数据?
EN

Software Engineering用户
提问于 2022-04-12 13:10:19
回答 2查看 188关注 0票数 1

我目前有一个单一的web应用程序。有些API调用需要大量的处理资源,我想从我的“后端”monolith中提取出这个部分,并将其放在自己的服务中。

我使用Docker撰写来开发我的应用程序。我的数据库是一个MongoDB副本集,用来模拟我在生产中拥有的东西,这是MongoDB Atlas上的一个3节点副本集。我正在开发的容器如下所示:

  • 前部
  • 后端
  • mongo0
  • mongo1
  • mongo2
  • 雷迪斯
  • ..。

我读过关于微服务的文章,似乎强烈建议不同的服务不应该共享数据。我以前从未使用过微服务架构,但是不共享数据的论点是有意义的,所以我打算遵循这个建议。

这就意味着,如果我把“后端”分成两个部分,让我们称它们为“后端”和“后端重”,那么每个部分都需要自己的数据库。

在生产中,在MongoDB地图集上,我可能会为“后端重”,甚至可能是另一个集群建立另一个数据库。然后,我将分别运行我的“后端重”服务和“后端”服务。但是现在,我想知道我的开发设置会是什么样子。我的“后端重”服务需要“mongo-Hey0”、“mongo-Heady1”和“mongo-Shiy2”,像这样吗?

  • 前部
  • 后端
  • mongo0
  • mongo1
  • mongo2
  • 后端重
  • 蒙天0
  • 蒙天
  • 蒙天2
  • 雷迪斯
  • ..。

如果我最终想把后端的另一部分变成自己的服务呢?第三项服务还需要另外3个集装箱吗?对我来说没什么意义。顺便说一句,我在开发中需要一个副本集的原因是,一些MongoDB命令(例如事务)只能在副本集中使用。此外,我喜欢让我的开发设置尽可能接近我的生产设置。

谢谢!

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2022-04-13 18:48:55

但是现在,我想知道我的开发设置会是什么样子。我的“后端重”服务需要“mongo-Hey0”、“mongo-Heady1”和“mongo-Shiy2”,像这样吗?

微服务方法的本质是每个服务都可以独立开发、测试和部署--每个服务都可能由一个单独的团队拥有。

因此,您将为每个服务设置一个独立的开发设置,并且作为该设置的一部分,您将只拥有一个数据库。

想一想,如果你有一个电子商务应用程序,使用条纹或贝宝支付-你没有你自己的开发拷贝条或贝宝在您的开发环境。你要么把它连接到真实的产品,要么制作一些非常简单的假版本,这足以测试你自己的系统。

我无法确切地告诉您,传统的monolith、分布式monolith (即运行在不同服务器上但共享一个dev设置并必须一起测试匹配版本的组件)还是microservices是最佳方法。仔细研究每种方法的优缺点,注意不要将分布式的monolith与微服务混淆。

票数 1
EN

Software Engineering用户

发布于 2022-04-13 15:19:09

微服务要求您不能共享数据库。您仍然可以使用相同的3个mongo实例来保存多个数据库。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/438011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档