使用Kafka作为事件存储,补充事件溯源聚合

5

越来越多的文章谈论 kafka 作为事件存储库,并在使用 cqrs 和事件溯源构建的应用程序中使用它。 如何查询 kafka(作为事件存储)以获取特定聚合的事件,以便在写入方面完成操作?

1个回答

0

您可以使用Kafka Streams(http://docs.confluent.io/current/streams/index.html)来计算存储在Kafka中的数据聚合。在下一个版本中(投票已经开始),Kafka Streams将添加一个名为交互式查询的新功能,允许您随时查询每个聚合的当前值。

现在请参阅设计文档(仍带有旧名称“Queryable State”功能)https://cwiki.apache.org/confluence/display/KAFKA/KIP-67%3A+Queryable+state+for+Kafka+Streams

发布后将有关于如何使用交互式查询的详细文档。如果您现在有后续问题,请直接提出。


有没有使用kafka和queryable state的示例?所有事件都应该在同一个主题上吗?一个聚合可以有多种类型的事件,我假设每个事件都有自己的主题。 - hsen
有没有使用Kafka和可查询状态的示例?所有事件都应该在同一个主题上吗?一个聚合可以有多种类型的事件,我假设每个事件都有自己的主题。为了查询特定聚合的状态,我们需要按顺序聚合所有这些事件的结果。我是否错误地使用了Kafka? - hsen
以下是两个示例:https://github.com/confluentinc/examples/blob/master/kafka-streams/src/main/java/io/confluent/examples/streams/interactivequeries/WordCountInteractiveQueriesExample.java 和 https://github.com/confluentinc/examples/blob/master/kafka-streams/src/main/java/io/confluent/examples/streams/interactivequeries/kafkamusic/KafkaMusicExample.java(此存储库还包含其他Kafka Streams示例)。 - Matthias J. Sax
状态针对单个操作员。如果您有不同类型,仍可以创建自己的组合类型将所有数据提供给同一操作员。对于主题也是如此。对于Kafka,数据只是字节,因此,如果您提供自定义的 de/serializer,也可以将不同类型写入单个主题。(关于您问题的第二部分,我不太确定您的意思。也许您想在Confluent或Kafka邮件列表上跟进?https://groups.google.com/forum/#!forum/confluent-platform或http://kafka.apache.org/contact) - Matthias J. Sax

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