Flink的两种主要的处理语义的区别在哪

2025年01月02日 建站教程

今天给大家简单介绍一下关于Flink提供的两种主要的处理语义,它们分别是At-least-onceExactly-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、实现难度:至少一次简单,精确一次复杂。

本文链接:http://so.lmcjl.com/news/20549/

展开阅读全文