quanttide / quanttide-specification-of-product-developing

量潮产品研发标准
Apache License 2.0
0 stars 0 forks source link

事件驱动模式的架构设计方案 #2

Open Guo-Zhang opened 1 year ago

Guo-Zhang commented 1 year ago

Event Sourcing 事件溯源:https://eventsourcing.readthedocs.io/en/stable/topics/introduction.html

Guo-Zhang commented 1 year ago

事件溯源

事件溯源(Event Sourcing)是一种软件开发模式,用于记录和存储应用程序中发生的事件序列,以重建和恢复应用程序的状态。它的核心思想是将应用程序的状态变化表示为一系列不可变的事件,并将这些事件存储在事件日志中,而不是直接存储当前状态。

在事件溯源模式中,应用程序的状态是通过重新应用所有事件来计算得出的。通过将事件日志中的事件按顺序重新播放,并应用每个事件的变更,可以重建应用程序的状态,从而实现应用程序的恢复、回溯和审计。

以下是事件溯源模式的一些关键概念:

  1. 事件(Event):事件是应用程序状态变化的离散发生的事实,它包含了所发生事件的相关数据。事件是不可变的,一旦创建就不能被修改。

  2. 事件日志(Event Log):事件日志是一个持久化的数据存储,用于记录应用程序中发生的事件序列。每个事件都会追加到事件日志中,形成一个按时间顺序排序的事件流。

  3. 聚合根(Aggregate Root):聚合根是事件溯源模式中的一个重要概念,代表了一组相关的事件。聚合根是事件序列的边界和一致性边界,它负责对事件进行聚合和处理,以维护一致的状态。

  4. 重播(Replay):通过重新应用事件日志中的事件,按照顺序重建应用程序的状态的过程称为重播。通过重播,应用程序可以回溯到任何特定时间点的状态,并重新计算应用程序的状态。

事件溯源模式具有以下优点:

  1. 可溯源性:通过事件日志,可以完整地追踪和记录应用程序中发生的事件,实现了全面的审计和可溯源性。

  2. 灵活性:由于事件是不可变的,可以根据需要重新计算和重建应用程序的状态。这使得可以轻松地实现版本控制、回滚和并发处理。

  3. 历史记录:由于应用程序的状态是通过事件序列构建的,可以查看和分析历史上任意时间点的应用程序状态,以便进行分析和洞察。

  4. 扩展性:事件溯源模式以事件为中心,可以支持高度可扩展的架构,因为事件可以并行处理,不会出现竞争条件。

尽管事件溯源模式可以为应用程序带来许多好处,但它也增加了复杂性和存储开销。因此,在选择应用事件溯源模式时,需要仔细考虑应用场景和需求。