我目前正在评估用于设计/实施事件源+ CQRS体系结构系统设计方法的选项。由于我们想将Apache Kafka用于其他方面(正常的pubsub消息传递+流处理),因此下一个逻辑问题是“我们可以将Apache Kafka存储用作CQRS的事件存储吗?”,或更重要的是那是明智的选择吗?
目前,我不确定。该来源似乎支持它:https://www.confluent.io/blog/okay-store-data-apache-kafka/
此其他消息来源建议反对:https://medium.com/serialized-io/apache-kafka-is-not-for-event-sourcing-81735c3cf5c
在我目前的测试/实验中,我遇到的问题与第二个来源所描述的类似,这些问题是:
即使这个问题有点悬而未决,它的确是这样的:您是否使用Kafka作为事件源系统上的主要事件存储?您如何处理根据实体实例的命令历史来重组实体实例的问题(鉴于该主题有数百万个条目扫描所有集合的情况是不可行的)?您是否只使用了一个牺牲潜在并发使用者的分区(假设订购保证仅限于特定主题分区)?
任何具体或一般性的反馈意见都将受到极大的赞赏,因为这是一个复杂的主题,需要考虑多个方面。]
提前感谢。
编辑
6年前在这里进行了类似的讨论:Using Kafka as a (CQRS) Eventstore. Good idea?当时的共识也有所分歧,很多人认为这种方法很方便,并提到了Kafka如何原生处理大量实时数据。尽管如此,问题(至少对我而言)与之无关,而与卡夫卡重建实体状态的能力有多不便相关-要么通过将主题建模为实体实例(其中主题数量呈指数级增长是不希望的) ,或通过建模主题es实体类型(主题中的事件数量使重建非常缓慢/不切实际)。我目前正在评估用于设计/实施事件源+ CQRS体系结构系统设计方法的选项。由于我们想将Apache Kafka用于其他方面(正常的pubsub消息传递...
您的理解大体上是正确的: