我试图熟悉CQRS和微服务体系结构,我了解CQRS包括将读取模型和域模型分离开来,并且每个读取模型都有一个特定的服务数据库来优化查询端。
但是,作为一个只习惯于单一体系结构的人,如果他们生活在不同的服务中,我不明白他们是如何处理关系数据的;比方说,我有一个用户微服务和一个带有他们的读取模型的微服务,我应该如何与发布它们的每个用户一起查询这些帖子,如何管理不同的微服务之间的相关数据?
发布于 2019-11-10 23:10:02
我有一个用户微服务和一个带有他们的读取模型的微服务,我应该如何与发布它们的每个用户一起查询这些帖子,如何管理不同的微服务之间的相关数据?
您可以将数据从拥有它的服务的持久存储复制到可以生成和更新所需视图的某个公共位置。
管道的一个简单实现可能是有一个按某些计划触发的计时器,每次计时器触发时,您都会将更新的信息拉到视图中,应用您可能需要的任何转换。
存在一些延迟,因为服务所做的更改传播到视图需要时间,但是当您决定用户和帖子应该分开服务时,这是您注册的部分内容。
,比方说,我看到了需要的帖子和用户的数据。如果用户更新了他的信息,这是否意味着我必须更新该用户发布的每一篇文章的数据?
“视情况而定”。例如,您可能要将数据复制到关系数据库中:如果您的视图是由关系描述的,那么更新用户必然会更新所有视图的底层数据;在数据库更新后构造的视图的任何表示都将具有新的数据。
另一方面,如果您正在使用文档存储,那么您可能需要更新所有受影响的文档,或者使用与用户文档的链接关系来设计这些文档。如果你想一想你可以在网络上组合信息的不同方式,这可能会更清楚。
https://stackoverflow.com/questions/58793543
复制相似问题