如何确定Kafka是否适合事件存储?

时间:2019-02-18 14:47:02

标签: apache-kafka event-sourcing

我考虑将Kafka用于事件来源项目(有些代理商会产生事件,这些事件将通过Kafka传递给特定的处理器...)

由于我没有活动采购和Kafka的实际工作经验,因此我在线上进行了一些研究。而且我发现 Kafka不适合用于事件源Using Kafka as a (CQRS) Eventstore. Good idea?)。 有引号:

  

SQL / NoSQL存储和Kafka作为代理比离开更好   Kafka兼任这两个角色,以创建完整的功能完整解决方案

有一位卡夫卡合著者在讲述

  

Kafka可以很好地用作事件源的日志。它是   容错的,可扩展到巨大的数据大小,并具有内置功能   分区模型。

对于我来说,我仍然不能考虑使用Kafka是一个好主意。即使Kafka有主题,我也需要活动存储吗?

我想问自己一个简单的问题列表,这可以帮助我决定是单独使用Kafka还是使用Kafka +事件存储。

1 个答案:

答案 0 :(得分:2)

  

如何确定Kafka是否适合事件存储?

首先,您需要确定您认为“事件源”的含义。

您可能想复习Martin Fowler的What do you mean by "Event-Driven"

要考虑的一件事是,是否需要在事件分区上维护域不变式。在大多数专用事件存储中,有一些机制可以确保只有新事件与先前编写的事件一致时,才将新事件追加到历史记录中。

在许多基于事件的解决方案中,您需要许多简短的历史记录-每个订单履行,每次装运,每个流程实例的历史记录-以便您可以支持对不同实例的并发写操作而不会丢失一致性属性。 / p>

如果需要这些支持,则需要研究Kafka的功能集与它们的匹配程度(实际上与评估其他任何现成的解决方案没有区别)。