我正在尝试在我的新项目中使用 CQRS 和 EventSorcing。我遵循 Greg Young 几年前建议的方式(Mark Nijhof 实施 - http://cre8ivethought.com/blog/2009/11/12/cqrs--la-greg-young/)。我有一些关于这个解决方案的可扩展性的问题。
这篇文章中提到了一些点Mark Nijhof 的文章。但现在的问题是 Denormalizer 部分,它负责更新报告数据库。这部分我想做异步,所以在将事件发布到总线后我想立即返回控制。我们建议可以将 Denormalizer 实现为独立的 Web 服务 (WCF),它将处理传入事件并使用批量命令以定时方式更新报告数据库。看起来它可能是一个瓶颈,所以我们还想在这一点上添加一些可扩展性 - 一个集群解决方案。但是在集群的情况下,我们无法控制报告数据库更新的顺序(或者我们应该实现一些奇怪的,我猜有错误的逻辑会检查报告数据库中的对象版本)。另一个问题是解决方案的可持续性:如果失败,我们将在非规范化器中丢失更新,只要我们不在任何地方持久化它们)。所以现在我正在寻找这个问题的解决方案(Denormalizer 可扩展性),欢迎提出任何想法!