根据我的理解,事件存储只是所有事件的数据存储。这可以是从关系数据库到 NoSQL 的任何东西,但应该针对存储和查询大量非关系数据进行优化。因此我们可以使用以下服务在 Azure 中存储事件:
上述哪项服务适用于事件溯源?
对于存储底层事件流,CosmosDb和Azure 表存储都是很好的解决方案 - 我广泛使用后者,但也有使用 JET 的 CosmosDb 的很好的示例。
事件中心作为后备存储并不理想,因为在事件溯源中您希望永久存储事件。当然,您可以将事件中心事件转发到持久存储,但最终会使用该存储作为事件溯源的事实来源。
SQL Server上确实存在许多事件源的实现,但我不喜欢使用锁定的事件模式,因为它会增加大量工作。
对于 CosmsoDb,请查看: GitHub 上的 JAT/Equinox
对于 Azure 表存储,我有以下示例:GitHub 上的 EventsSourcing-on-Azure-Functions
事件中心或多或少是一种“发布-订阅”机制。您可以向它发送事件,它会将这些事件广播给正在收听的人。
Azure 表存储、SQL Server 和 CosmosDB 存储数据......它们各自以非常不同的方式存储数据,但最终,它们的工作都是存储数据。这些技术中的每一种都具有“更改源”通知(当文档或行中的数据发生更改时通知侦听器),但它远不如为实时生成事件而构建的技术那么可靠。
事件中心可以存储数据,但存储时间很短...例如,您可以将 EH 数据的 TTL 设置为 3 天。这意味着一条消息将在那里保留 3 天,以便订阅者可以获取该消息。
您可以将事件中心连接到其他服务,例如:流分析...可以分析数据并对其执行某些操作...例如:将其发送到数据湖等存储机制。
因此,在您询问的所有技术中,您可能需要事件中心来获取事件。
我在我的架构中使用它们......我有一个中心,每天处理来自数千个客户端的数百万个事件,没有延迟或停机问题。在我看来,他们太棒了。
| 归档时间: |
|
| 查看次数: |
2234 次 |
| 最近记录: |