Jes*_*spc 5 cqrs event-sourcing apache-kafka
我一直在考虑在事件源配置中使用 Apache Kafka 作为事件存储。发布的事件将与特定资源相关联,传递到与资源类型相关联的主题,并按资源 id 分片到分区中。因此,例如,创建类型为 Folder 且 ID 为 1 的资源将产生一个 FolderCreate 事件,该事件将传递到分区中的“文件夹”主题,该分区通过将 id 1 分片到主题中的分区总数来给出。即使我不知道如何处理使日志不一致的并发事件。
最简单的场景是有两个并发操作,它们可以使彼此无效,例如一个更新文件夹,一个销毁同一个文件夹。在这种情况下,该主题的分区最终可能包含无效序列 [FolderDestroy, FolderUpdate]。这种情况通常通过对事件进行版本控制来解决,如此处所述,但 Kafka 不支持此类功能。
在这些情况下,如何确保 Kafka 日志本身的一致性?
我认为可能可以使用 Kafka 进行聚合(在 DDD 意义上)或“资源”的事件溯源。一些注意事项:
https://issues.apache.org/jira/browse/KAFKA-2260会以更简单的方式解决 1,但似乎陷入停滞。
Kafka Streams 似乎为您提供了很多这样的功能。例如,4 是一个 KTable,您可以让事件生成器在发送事件之前使用 1 来确定事件对于当前资源状态是否有效。
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |