2017年发版的Flink 1.4.0,引进了一个里程碑式的新特性:TwoPhaseCommitSinkFunction ,抽象了两阶段提交协议的通用逻辑,相关联的jira单,并在Kafka Producer的connector中实现了它,支持了对外部Kafka sink的exactly-once语义。在此基础上,结合 Flink、sources、sinks 和 Kafka 0.11以上的版本,可以实现端到端一致性语义的应用,需要用户实现少数方法来实现一致性语义。
在这篇博客中,介绍以下几个方面:
- 描述 Flink checkpoints 在保证一致性语义中的角色作用
- 展示Flink如何通过两阶段提交协议与sources和sinks交互,以提供端到端的一致性语义
- 通过一个简单的示例,通过使用 TwoPhaseCommitSinkFunction ,实现落地到文件目的端的一致性语义