Kafka作为事件溯源系统中的事件存储

10

这个问题类似于使用Kafka做(CQRS)事件存储,是个好主意吗?,但更加具体化了。

当我有成千上万个事件“来源”(DDD中的聚合根)时,如何将Kafka用作事件存储?正如我在链接的问题和其他一些地方所读到的那样,我将遇到每个源一个主题的问题。如果我按类型将事件拆分到各自的主题中,则很容易消费和存储,但我需要访问特定源的事件流。如何使用Kafka进行事件溯源?


基于实体实例的主题是不可行的,正如您所提到的,因为这会创建大量的主题(Kafka并不设计处理)。唯一真正的可能性是基于类型的主题,然而这会带来一个问题,即如何搜索与仅1个特定聚合实例相关的命令/事件。您是如何解决快速搜索事件的问题(在基于类型的主题中)以重构实体实例的呢? - tony _008
1个回答

2
将所有事件源发布到一个主题中,使用包含每个事件源唯一标识符的数据类型(Thrift?)。然后为每个感兴趣的事件类型创建消费者,并使用唯一的消费者组名称进行标识。这样,每个唯一的源消费者在Zookeeper中都有自己的偏移值。所有人都读取整个主题,但只输出(或处理)来自单个源(或源组)的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接