我一直在考虑使用Apache Kafka作为事件源配置中的事件存储。发布的事件将与特定的资源相关联,传递到与资源类型相关联的主题,并按资源ID分片到分区中。因此,例如,创建类型为Folder和id 1的资源将产生一个FolderCreate事件,该事件将通过在主题中的分区总数中对id 1进行分片来传递到给定分区中的“Folders”主题。即使我不知道如何处理使日志不一致的并发事件。
最简单的场景是有两个并发操作,它们可以使彼此无效,例如一个更新文件夹,一个销毁同一个文件夹。在这种情况下,该主题的分区最终可能包含无效序列[FolderDestroy,FolderUpdate]。这种情况通常通过对事件进行版本化来解决,正如这里所解释的那样,但是Kafka不支持这样的特性。
我认为可能可以使用Kafka作为聚合(在DDD意义上)或“资源”的事件来源。一些注意事项:
https://issues.apache.org/jira/browse/kafka-2260将以更简单的方式解决1,但似乎停滞不前。
Kafka Streams似乎为您提供了很多这方面的内容。例如,4是一个KTable,您可以让事件生成器在发送事件之前使用它来确定事件对于当前资源状态是否有效。
我了解了如何通过使用Apache Kafka作为事件代理来实现事件源。(链接到融合文章)
我一直在读关于微服务和事件来源的文章,以及它是如何将服务从另一个服务中分离出来的。有两个概念我不清楚。首先,如果在微服务体系结构中,每个服务都可以独立开发,我们如何解释服务间的通信依赖? 例如,如果服务A和服务B需要通信,那么A需要将一个事件发送到一个中央总线,而B需要监听该事件并根据该事件采取行动,但这似乎会产生很多依赖关系。现在,如果我正在开发服务B,我需要知道服务A可以生成的所有事件。此外,
在我发布配置之后,当我执行HTTP curl时,状态是。在worker的日志中也没有错误日志,当我检查它时,在kafka主题中也没有数据。当我尝试做一个控制台-消费者时,我还尝试了其他几种组合,比如在。 我尝试的另一件事是使用这两个链接https://rmoff.net/2018/05/21/kafka-connect-and-oracle-data-types/https://www.confl
这个问题类似于将Kafka用作CQRS EventStore。好主意?,但更具体的实现。当我有数千个事件“源”(DDD中的聚合根)时,如何使用kafka作为事件存储?正如我在链接问题和其他一些地方读到的,我会有每个来源的主题的问题。如果我将事件按类型拆分到主题中,它将更容易使用和存储,但我需要访问特定源的事件流。如何用Kafka做事件来源?
在实现基于事件源的微服务时,我们遇到的主要问题之一是聚合响应数据。例如,我们可能有两个实体,如学校和学生。一个微服务可能负责处理学校相关的业务逻辑,而另一个微服务可能处理学生。 现在,如果有人通过RESTendpoint进行查询并询问某个特定的学生,他们可能希望了解学校和学生的详细信息,那么对我来说,唯一已知的方法是以下方法。 > 使用类似于服务链接的东西。一个例子是Api-Gateway在向几个
我试图在Kafka流之上实现一个简单的CQRS/Event sourcing概念验证(如https://www.confluent.io/blog/event-sourcing-using-apache-kafka/所述) 我有4个基本部分: 命令处理器-命令流,左与聚合状态KTABLE连接。对于结果流中的每个条目,使用函数生成结果事件,并将它们发布到主题 问题是--有没有办法确保我在州存储中有聚