使用了另一个CQRS / ES框架,我也了解了Wolkenkit。它看起来像是一个不错的框架,可能缺少一些高级功能,但是确实使用简单但智能的API对CQRS / ES进行建模。
背景:我确实阅读了文档,但尚未实际了解它。
虽然文档没有回答一点,但是恕我直言,重要的是以下问题:如何通过其体系结构 Wolkenkit实现水平扩展,即添加其他服务实例(尤其是在写和读方面采用不同的数量) )。听起来好像应该有可能,但是(IMHO)没有说明如何以及为什么。
CQRS / ES具有一些潜在的同步/序列化点,如果命令的顺序(可能由乐观锁定处理)或更重要的是单个聚合实例的事件顺序具有可以保证(例如,如果事件顺序错误,则无法正确构建读取端)。
我在文档中没有看到这个答案,我认为仅使用RabbitMQ并不能解决这个问题。
它是否已经通过自定义基础结构元素显式地解决了?还是有一些(未提及的)约束(隐式地)解决了?如果我错过了一些东西,可以轻松地链接到文档
答案 0 :(得分:0)
在讨论扩展时,您主要需要扩展两件事:代理(负责读取模型)和核心(负责写入模型)。
关于核心,我们现在可以并行处理多个命令,只要它们针对不同的集合即可。使用marble-run序列化了针对同一聚合的多个命令。如果有多个内核在运行,我们目前没有可靠的扩展机制,但这是在我们的roadmap上。请注意,这里还有一个issue,非常欢迎您为该主题提供帮助和/或赞助(尽管如此,我们迟早会对此进行解决)。
关于代理,它们彼此独立,因此可以自由扩展,因为它们之间没有任何依赖关系。
目前,CLI不支持扩展核心或代理,您需要手动执行此操作,但是一旦解决了上述问题,此操作将再次更改。
免责声明:我是wolkenkit的核心开发人员之一,所以请一言以蔽之。