发布网友 发布时间:2024-10-14 21:08
共1个回答
热心网友 时间:2024-10-18 00:01
XTransfer作为专注于跨境B2B电商中小企业的金融服务提供商,通过建立数字化、自动化平台,致力于全球的财资管理。早期,采用全量离线处理方式,数据时效性不足。随着业务扩展,对实时数据的需求增加,促使我们转向实时数仓建设,选择变更数据捕获工具和实时计算引擎。
2021年2月,我们关注到Flink CDC项目,其内嵌Debezium,简化了开发和部署。Flink的实时计算能力与丰富的外部系统接入使其成为理想选择。我们还结合业务实际,利用MongoDB的Change Streams特性,开发了Flink与MongoDB的CDC连接器,并已发布在Flink CDC的2.1版本中,接下来分享实现细节和生产实践。
Flink的Dynamic Table API支持流数据,包括Append Mode和Update Mode的变更流。Flink 1.11引入了新的TableSource和TableSink,支持Update Mode的变更日志处理。Flink通过接收外部系统如MongoDB的变更日志,转化为可识别的changelog,从而支持实时定义动态表。
MongoDB的副本集和分片集群中,复制机制决定了数据同步和捕获的复杂性。副本集的oplog记录难以满足Flink对完整变更记录的需求,而Change Streams特性则简化了数据捕获,尤其在分布式环境下。
我们利用MongoDB官方的Change Streams和Debezium EmbeddedEngine,将MongoDB的变更事件转换为Flink的UPSERT changelog。Flink通过Changelog Normalize和Change Streams的resume机制,支持从checkpoint和savepoint恢复。