首页/数据/数仓建模速查/流处理端到端精确一次的实现要点
湖仓与引擎63 条

流处理端到端精确一次的实现要点

端到端一致需要三件事:可重放的数据源、检查点容错、幂等或事务性写入;写入湖表时通常用两阶段提交或按主键幂等覆盖。

数仓建模速查数据更新于 2026-10-12
源可重放位点
计算检查点状态
写入事务或幂等
验证故障注入测试

两阶段提交写入

两阶段提交写入
sinkBuilder.build();
// FlinkKafkaProducer 与 StreamingFileSink 提供 exactly-once 语义
// 湖表写入可用 Iceberg/Hudi 的事务提交配合检查点完成
stream.sinkTo(icebergSink).uid('iceberg-sink');
幂等写入要保证主键唯一:按业务主键覆盖 + 保留版本号,重复消费不会产生重复行。

易错点

  • 源头可重放但写入非幂等,故障恢复后数据翻倍

数据来源与参考

  • Apache Flink 官方文档:End-to-End Exactly-Once
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌