事件中心是否打算用于事件溯源/仅附加日志架构

Is Event Hub's intended to be used for Event Sourcing / append-only log architectures

事件中心不允许您存储超过 7(最多 30)天的消息。有这些限制的 Azure 建议的 PaaS 事件溯源架构是什么?如果它是 Event Hub + 快照,如果我们需要以某种方式重建该状态,会发生什么?另外,事件中心是对 KSQL/Spark Azure 流分析的回答吗?

事件中心应该用于临时存储事件,同时在数据存储实例之间移动它们。您必须将它们加载到某个永久存储中才能无限期使用,例如宇宙数据库。

KSQL 在某种程度上类似于 Azure 流分析。 Spark 是一个更广泛的产品,但您可以使用 Spark 来处理事件中心数据。

P.S。我不是 Microsoft 的官方发言人,所以这只是我的观点。

好问题!

是的,EventHubs 旨在用于 Event SourcingAppend-only log 模式。 EventHubs 可以用作 source/sink 用于流处理和分析引擎,例如 SPARK,因此不是它的竞争对手。一般来说,Eve​​ntHubs 提供与 Apache Kafka 类似的功能。

& 是的,从仅附加日志实现重建事务 Snapshotting 绝对是推荐的方法!

在将 EventHubs 塑造为产品时,我们为 retentionPeriod 分配默认值的考虑是 -

  • 大多数关键系统每隔几分钟创建一次快照。
  • 大多数围绕此的设计模式建议保留旧快照以进行重建

所以,很明显我们不需要无限日志,对于大多数用例来说,一天的时间限制就可以了。因此,我们从默认的 1 天开始 - 并给出一个旋钮直到 7 天。

如果您认为,您会遇到这样一种情况,您必须及时返回 >7 天以重建快照(例如:用于调试 - 这通常不是 99% 的情况 - 但是,同意为此设计和适应是非常明智的),推荐的方法是将数据推送到存档存储。

当我们的 usage Metrics 表明我们的许多客户都有一个 EventHubs consumer group 专用于将数据推送到存档存储时 - 我们希望开箱即用地启用此功能,然后开始报价 - Event Hubs Capture feature.

More on Event Hubs.