我考虑将Kafka用于事件来源项目(有些代理商会产生事件,这些事件将通过Kafka传递给特定的处理器...)
由于我没有活动采购和Kafka的实际工作经验,因此我在线上进行了一些研究。而且我发现 Kafka不适合用于事件源(Using Kafka as a (CQRS) Eventstore. Good idea?)。 有引号:
SQL / NoSQL存储和Kafka作为代理比离开更好 Kafka兼任这两个角色,以创建完整的功能完整解决方案
有一位卡夫卡合著者在讲述
Kafka可以很好地用作事件源的日志。它是 容错的,可扩展到巨大的数据大小,并具有内置功能 分区模型。
对于我来说,我仍然不能考虑使用Kafka是一个好主意。即使Kafka有主题,我也需要活动存储吗?
我想问自己一个简单的问题列表,这可以帮助我决定是单独使用Kafka还是使用Kafka +事件存储。
答案 0 :(得分:2)
如何确定Kafka是否适合事件存储?
首先,您需要确定您认为“事件源”的含义。
您可能想复习Martin Fowler的What do you mean by "Event-Driven"。
要考虑的一件事是,是否需要在事件分区上维护域不变式。在大多数专用事件存储中,有一些机制可以确保只有新事件与先前编写的事件一致时,才将新事件追加到历史记录中。
在许多基于事件的解决方案中,您需要许多简短的历史记录-每个订单履行,每次装运,每个流程实例的历史记录-以便您可以支持对不同实例的并发写操作而不会丢失一致性属性。 / p>
如果需要这些支持,则需要研究Kafka的功能集与它们的匹配程度(实际上与评估其他任何现成的解决方案没有区别)。