我一直在考虑在事件溯源配置中使用Apache Kafka作为事件存储。发布的事件将与特定资源相关联,交付到与资源类型相关联的主题,并通过资源ID将其分片到分区中。例如,创建资源类型为Folder且ID为1的资源将生成一个FolderCreate事件,该事件将被交付到“folders”主题中,在该主题的分区中根据ID 1对总分区数进行划分。即使我不知道如何处理使日志不一致的并发事件。
最简单的情况是存在两个可以使彼此无效的并发操作,例如更新文件夹和销毁同一文件夹的操作。在这种情况下,该主题的分区可能包含无效序列[FolderDestroy,FolderUpdate]。该情况通常通过对事件进行版本控制(正向并发性和幂等性)解决,具体请参见这里 ,但Kafka不支持该功能。
那么,有什么方法可以确保在这些情况下Kafka日志本身的一致性呢?
最简单的情况是存在两个可以使彼此无效的并发操作,例如更新文件夹和销毁同一文件夹的操作。在这种情况下,该主题的分区可能包含无效序列[FolderDestroy,FolderUpdate]。该情况通常通过对事件进行版本控制(正向并发性和幂等性)解决,具体请参见这里 ,但Kafka不支持该功能。
那么,有什么方法可以确保在这些情况下Kafka日志本身的一致性呢?