【发布时间】:2021-04-28 01:01:52
【问题描述】:
我正在学习分布式系统中的事件溯源和 CQRS,我在尝试确定何时是执行验证的最佳时间时遇到了一些麻烦……在事件发生之前或之后存储?我已经对该主题进行了大量搜索和阅读,但似乎无法找到解决此问题的答案/建议。
例如(简单示例),如果我有一个 Web API 请求从银行帐户中提取一些钱,我可能会执行以下验证:
- 银行账户是否存在?
- 银行账户是否有足够的资金提取?
当请求进来时,我是在执行上述验证之前(并且有存储无效事件的风险)还是在验证之后保存事件(并且有可能在整个过程中出现问题,例如服务关闭,以及根本不存储事件)?对于 CQRS,事件是在命令执行之前存储还是作为命令的一部分(在命令处理程序中)存储?
我可以理解在发出请求之前会执行一些验证(例如,有效的提款金额),但可能存在在发出请求之前无法完成某些验证的情况。
这也导致了我如何在 Web API 调用的响应中返回错误(例如银行帐户无效)?
我对这个主题的理解可能完全错误,但正如我之前提到的,我只是在学习这个主题,我希望有人能给出答案,或者可以指出一些帖子/文章,这将有所帮助我的理解。
【问题讨论】:
标签: .net-core cqrs event-sourcing