【发布时间】:2019-01-14 18:28:15
【问题描述】:
我通读了 Lagom 文档,并且已经编写了一些相互交互的小服务。但是因为这是我第一次涉足 CQRS,所以我仍然有一些关于持久读取方面的概念性问题,我不太了解。
例如,我有一个用户服务,它保存了一个用户列表(作为聚合)及其个人资料数据,如电子邮件地址、姓名、地址等。
我现在的问题是
如果我想检索给定电子邮件地址的用户配置文件,我是否应该在读取端查询用户 ID,然后使用此 ID 查询事件存储以获取配置文件数据?还是应该读取端已经保留所有配置文件信息?
如果读取端有所有信息,事件存储的原因是什么?如果它真的是只写的,它不是真的有用吗?
我应该设计我的系统以尽可能多地使用事件存储,还是应该为所有内容提供读取端?可扩展性有何影响?
如果用户模型更改(例如,配置文件现在包含配置文件的描述)并且我使用包含所有配置文件数据的读取端,我如何将 lagom 中的读取端更新到现在也包含此说明?
根据这个问题,我应该为配置文件的不同字段保留不同的读取边表,而不是一个包含整个配置文件的表
如果不同的服务需要访问数据,它应该总是询问用户服务,还是应该根据需要保留自己的读取端?如果是后者,这是否违反了 CQRS 原则,即拥有数据的服务应该是唯一读取和写入该数据的服务?
如您所见,整个概念还没有真正“点击”,我很感谢您的回答和/或一些指示。
【问题讨论】:
标签: persistence cqrs lagom