今天给大家简单介绍一下关于Flink
提供的两种主要的处理语义,它们分别是At-least-once
和Exactly-once
!
At-least-once:少一次,保证每个记录至少被处理一次,可能会被处理多次。这种语义易于实现但不能保证精确的结果。
例如:
env.setProcessingTimeCharacteristic(TimeCharacteristic.ProcessingTime);
At-least-once:通过 ACK 确认和重试机制保证每个记录最终处理。
Exactly-once:精确一次,保证每个记录只被处理一次,实现精确的结果。这需要更复杂的传输和检查点机制来实现。
例如:
env.setProcessingTimeCharacteristic(TimeCharacteristic.IngestionTime);
Exactly-once:通过两阶段提交协议和基于检查点的容错机制确保每个记录仅处理一次。
两则之间的区别:
1、处理结果:至少一次可能重复,精确一次保证单一;
2、数据传输:至少一次简单通过 ACK 确认,精确一次需要两阶段提交;
3、容错机制:至少一次通过重试实现,精确一次需要基于检查点的容错;
4、实现难度:至少一次简单,精确一次复杂。
标签: At-least-once, Exactly-once, flink, Flink处理语义
上面是“Flink的两种主要的处理语义的区别在哪”的全面内容,想了解更多关于 后端开发 内容,请继续关注web建站教程。
当前网址:https://m.ipkd.cn/webs_5018.html
声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!