首页/数据/数据工程与 ETL 速查/投递语义:至多一次/至少一次/精确一次
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

投递语义:至多一次/至少一次/精确一次

三种投递语义描述故障时的重复与丢失边界:至多一次可能丢、至少一次可能重、精确一次要求端到端不丢不重,通常靠事务或幂等落库实现。

At-most-once先记录位点后处理,故障时可能丢失
At-least-once先处理后记录位点,故障时可能重复
Exactly-once事务提交或幂等写入,端到端不丢不重

Kafka 消费侧相关配置

Kafka 消费侧相关配置
isolation.level=read_committed    # 只读已提交事务的消息
enable.auto.commit=false          # 手动提交,处理成功后提交
引擎宣称的精确一次通常是内部语义,跨系统写外部库时仍要配合幂等键或事务表。

易错点

  • 至少一次加无幂等下游等于重复入账,必须在 sink 端做去重或 upsert
  • 幂等是结果稳定,事务是读写原子可见,二者不等价

数据来源与参考

  • Apache Kafka 官方文档:Message Delivery Semantics
  • Apache Flink 官方文档:End-to-End Exactly-Once
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌