什么是事件溯源?为什么会这样命名呢?

What is event sourcing? Why is it named so?

我在 https://martinfowler.com/eaaDev/EventSourcing.html 上读到了它。我知道维护更改日志及其压缩和其他事情,但从来没有理解为什么它被称为事件溯源。

因为事件日志是真相的来源。换句话说,应用程序的状态来源于事件。

正如所选答案所说,事件溯源是一种持久性机制,其中不存储应用程序状态,而是从事件的历史中推断出来。

换句话说,唯一的真实来源是事件日志。应用程序中的每个突变都按顺序存储在事件存储的流中。

顺便说一下,您已经用 Kafka 标记了问题,但 Kafka 并非设计用于事件溯源,而是用于 publish-consumer 消息通信。尽管理论上您可以在 kafka 中永久保留事件并订阅流以重播它们并将它们投射以推断应用程序的状态,但还有更合适的产品,例如在编写时具有并发控制的 EventStoreDb。

PS:对于讲西班牙语的人,我有一个关于事件溯源的介绍视频here. For English speakers I recommend the Event Store blog