nic*_*ick 10 domain-driven-design cqrs event-sourcing event-store microservices
我被要求在事件采购中做一些探索.我的目标是创建一个满足所有传统CRUD操作的微小API层.我现在正在使用一个名为'sourced'的软件包并尝试使用它(使用Nodejs).
但是,我开始意识到,单独使用事件来源并不是很有用.通常,它与CQRS结合.
当我向服务器发送写命令时,我对CQRS的理解是.该应用程序对数据进行了一些验证.并将其保存在事件存储中(我正在使用mongoDB),例如:这是我的事件存储应该是这样的:
{method:"createAccount",name:"user1", account:1}
{method:"deposit",name:"user1",account: 1 , amount:100}
{method:"deposit",name:"user1",account: 1 , amount:100}
{method:"deposit",name:"user1",account: 1 , amount:100}
{method:"withdraw",name:"user1",account1,amount:250}
Run Code Online (Sandbox Code Playgroud)
它包含所有审计信息,而不是最终状态.但是,我很困惑如何处理读取操作.如果我想阅读帐户余额该怎么办?究竟会发生什么?这是我的问题:
如果有任何建议,我将非常感激,如果我的理解错误,请与我联系.
好问题尼克.您缺少的概念是"预测".当事件持续存在时,您将广播该事件.您的投影代码会侦听特定事件,然后执行更新等操作并创建"读取模型".读取模型是结束状态的一个版本(通常是持久的,但可以在内存中完成).
不错的是,您可以高度优化这些读取模型以供阅读.告别复杂而低效的连接等.
因为读取模型不是真实的来源,它是专门为阅读而设计的,可以在其中进行数据复制.只需确保在收到适当的事件时进行管理.
有关更多信息,请查看以下文章:
希望你发现这些有用.
**该图指的是非正规化,它应该讨论预测.
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |