我有一个关于 CQRS 范式的一般问题。
我知道 CommandBus 和 EventBus 将域模型与我们的查询端数据存储区分开,最终一致性的优点,以及能够对查询端的存储进行非规范化以优化读取等。这一切听起来都很棒。
但我想知道,当我开始扩展 Query 端负责更新 Query 数据存储的组件数量时,它们是否不会开始相互竞争以执行更新?
换句话说,如果我们尝试为 EventBus 使用 pub/sub 模型,并且对于特定的事件类型有很多不同的订阅者,他们会不会开始相互竞争更新各种非规范化数据?这不会让我们和 CQRS 之前的情况一样吗?
正如我所听到的那样,听起来 CQRS 应该完全消除这种争用,但这只是一种理想,实际上我们只是真正将其最小化吗?我觉得我可能会在这里遗漏一些东西,但不能指望它。