DocumentDB Change Streams - 实时捕获文档变更实现事件驱动架构

解说 DocumentDB 的 Change Streams 实时捕获文档变更的机制、与 Lambda 触发器的集成以及故障恢复时的 resume token 管理。

Change Streams 的机制

DocumentDB 的 Change Streams 是实时捕获集合变更(插入、更新、删除、替换)的功能。与 MongoDB 的 Change Streams API 兼容,可直接使用现有 MongoDB 应用程序的代码。Change Streams 读取集群的操作日志(oplog),按变更发生顺序传递事件。每个事件包含操作类型、变更后的文档全文和 resume token。

与 Lambda 触发器的集成

DocumentDB 的 Change Streams 设置为 Lambda 的事件源映射后,变更事件会自动传递到 Lambda 函数。在 Lambda 函数中根据事件类型执行处理。典型用例包括 OpenSearch 索引更新、缓存失效、向其他服务的数据同步和审计日志记录。批量大小和批量窗口的设置可调整吞吐量和延迟的平衡。

故障恢复与运维注意事项

Change Streams 的每个事件包含 resume token,保存此 token 后可在故障恢复时从最后处理的事件之后继续读取。Lambda 的事件源映射中 resume token 管理是自动化的。自行管理的消费者需要将 resume token 持久化到 DynamoDB 等存储中。变更日志的保留期最长 7 天,超过后事件将被删除。

Change Streams 的费用考虑

Change Streams 本身不产生额外费用,但变更日志的保留会消耗 I/O 和存储。变更日志保留期最长 7 天,写入频繁的集合存储使用量会增加。使用 Lambda 触发器时,Lambda 的调用次数和执行时间费用另行产生。通过批量大小设置减少 Lambda 调用次数可优化成本。

总结

DocumentDB 的 Change Streams 是实时捕获文档变更并构建事件驱动架构的功能。通过 Lambda 触发器自动处理变更,集成到 Kinesis Data Streams 可向下游分析管道传递数据。resume token 管理确保故障恢复时不丢失事件。