Flink-Kafka Connector 是连接kafka 的连接器,负责对接kafka 的读写, 本篇主要介绍kafka consumer 的执行流程与核心设计。
逻辑执行流程
分配当前task消费的partition与起始的offset : 根据从状态中恢复的数据与客户端指定的消费模式, 采取的方式是状态中offset优先, 即从状态中能够找到对应的offset 就使用该offset , 否则就根据客户端指定的方式
从kafka 中不断拉取数据, 发送到下游,并且保存当前的offset
为了保证整个任务的全局一致性,需要将offset 提交到状态中
如果开启了分区发现模式,那么需要将检测到新的分区添加到消费线程中。
两个重要接口
Flink 保证全局数据一致性是通过全局状态快照checkpoint 完成的, 也就是周期性的执行checkpoint 将当前的任务状态保存起来, Flink 在整个checkpoint 的执行过程中提供了两个接口,方便用户去做一些自定义的操作, 例如操作状态、两阶段提交实现等等。
CheckpointedFunction接口
提供了initializeState方法与snapshotState方法,initializeS