在CQRS中读取模型和关系数据

我正在尝试熟悉CQRS和微服务体系结构,我了解CQRS包括将读取模型与域模型分离,并且您具有针对每个读取模型的数据库特定服务,以优化查询方。

但是作为一个只习惯了整体架构的人,我不明白如果关系数据存在于不同的服务中,您将如何处理它们。比方说,例如,我有一个用户微服务和一个带有读取模型的帖子微服务,我应该如何与发布它们的每个用户查询帖子,如何管理不同微服务之间的相关数据?

weiweisenge 回答:在CQRS中读取模型和关系数据

  

我有一个用户微服务和一个具有读取模型的帖子微服务,我应该如何向发布它们的每个用户查询帖子,如何管理不同微服务之间的相关数据?

您将数据从拥有它的服务的持久存储中复制到某个通用位置,该位置可以构建和更新所需的视图。

管道的一个简单实现可能是有一个按一定时间表触发的计时器,并且每次触发计时器时,您都会将更新的信息拉到视图中,并应用您可能需要的任何转换。

存在一些延迟,因为服务所做的更改要花费一些时间才能传播到视图,但这是您决定分别为用户和帖子提供服务时所签署的内容的一部分。

  

假设我有一个包含帖子和所需用户数据的视图。如果用户更新了他的信息,这是否意味着我将不得不更新该用户发布的每个帖子的数据?

“取决于”。例如,您可能正在将数据复制到关系数据库中:如果您的视图是通过关系描述的,那么更新用户必然会更新所有视图的基础数据;数据库更新后构造的视图的任何表示形式都将具有新数据。

另一方面,如果您使用的是文档存储,则可能需要更新所有受影响的文档,或者设计与用户文档具有链接关系的那些文档。如果您考虑可以在网络上组合信息的不同方式,则可能会更清楚。

本文链接:https://www.f2er.com/3127326.html

大家都在问