首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在微服务架构中的另一个数据库中保留一个数据库的表的副本吗?

我可以在微服务架构中的另一个数据库中保留一个数据库的表的副本吗?
EN

Stack Overflow用户
提问于 2020-08-16 19:02:07
回答 2查看 208关注 0票数 2

我现在是微服务架构的新手,所以提前谢谢你。

我有两个不同的服务,一个用户服务和一个足球运动员服务,每个都有自己的数据库。(用户数据库和足球运动员数据库)。足球运动员服务有一个数据库,其中只有一个表存储足球运动员的信息。用户服务具有存储用户详细信息以及其他用户相关数据的数据库。

现在,用户可以通过查询足球运动员服务将足球运动员添加到他们的球队中,我需要将他们存储在某个地方,以便稍后显示。目前,我将每个用户的足球运动员存储在用户数据库中的一个表中,从而调用足球运动员服务,通过ID提供特定足球运动员的详细信息,并通过与user ID进行映射将它们保存在User数据库中。

那么,这是一个好主意吗?这是否意味着im在两个服务之间复制数据?如果是的话,还有什么其他方法可以实现相同的功能?

EN

回答 2

Stack Overflow用户

发布于 2020-08-16 19:35:14

目前,我将每个用户的足球运动员存储在用户数据库中的一个表中,这样我就可以调用足球运动员服务,通过ID为我提供特定足球运动员的详细信息,并通过映射user ID将它们保存在User数据库中。

“缓存”是一种相当常见的模式。从用户微服务的角度来看,来自Footballer的数据只是您可以保存或不保存的另一个输入。如果你在缓存,你通常会希望在缓存的数据上有某种类型的时间戳/版本。

缓存标识符是很正常的-我们经常需要某种correlation identifier来连接两个不同位置的数据。

如果您发现自己在用户域逻辑中使用足球运动员数据(也就是说,用户更改的方式取决于可用的足球运动员数据)……这更令人怀疑,可能表明你的界限画得不正确/你的一些能力在错误的地方。

如果你期望用户服务是自治的-也就是说,即使在足球运动员停止服务的情况下,也能够继续服务于它的目的,那么你的代码需要能够从足球运动员缓存的数据副本中工作,和/或能够暂停其工作的某些部分,直到该数据的新副本可用。

票数 0
EN

Stack Overflow用户

发布于 2020-08-17 00:54:48

在微服务的情况下,人们通常遵循DDD (域驱动设计):所以在你的例子中有两个域,即两个服务:

  1. Users
  2. Footballers

因此,用户服务应该只做用户特定的任务,而不应该关心足球运动员的数据。

因此,根据DDD,链接到用户的足球运动员应该存储在足球服务中。

在微服务架构的情况下,复制ID不会被认为是复制。

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

https://stackoverflow.com/questions/63436058

复制
相关文章

相似问题

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