本次分享来自阿里巴巴的工程师在Apache Kafka x Apache Flink·北京会议上的分享,关于Apache Flink结合Apache Kafka实现端到端的一致性语义的原理。
2017年12月Apache Flink社区发布了1.4版本。该版本正式引入了一个里程碑式的功能:两阶段提交Sink,即TwoPhaseCommitSinkFunction。
该SinkFunction提取并封装了两阶段提交协议中的公共逻辑,自此Flink搭配特定Source和Sink搭建精确一次处理语义( exactly-once semantics)应用成为了可能。作为一个抽象类TwoPhaseCommitSinkFunction提供了一个抽象层供用户自行实现特定方法来支持 Exactly-Once semantics。
接下来,我们进一步介绍flink的这个特性:
Flink的checkpoints在保证exactly-once语义时的作用
Flink是如何通过两阶段提交协议来保证从数据源到数据输出的exactly-once语义