美文网首页Flink
Flink容错机制-两阶段提交

Flink容错机制-两阶段提交

作者: 大空翼123 | 来源:发表于2022-01-22 09:26 被阅读0次

Flink+Kafka 实现端到端严格一次

我们知道,端到端的状态一致性的实现,需要每一个组件都实现,对于Flink + Kafka的数据管道系统(Kafka进、Kafka出)而言,各组件怎样保证exactly-once语义呢?

1.内部—— 利用checkpoint机制,把状态存盘,发生故障的时候可以恢复,保证部的状态一致性

2.source —— kafka consumer作为source,可以将偏移量保存下来,如果后续任务出现了故障,恢复的时候可以由连接器重置偏移量,重新消费数据,保证一致性

3.sink —— kafka producer作为sink,采用两阶段提交 sink,需要实现一个 TwoPhaseCommitSinkFunction

具体的两阶段提交步骤总结如下:

1.jobmanager 触发checkpoint 操作,barrier 从source 开始向下传递,遇到barrier 的算子将状态存入状态后端,并通知jobmanagerr

2.第一条数据来了之后,开启一个 kafka 的事务(transaction),正常写入kafka 分区日志但标记为未提交,这就是“预提交”

3.sink 连接器收到barrier,保存当前状态,存入checkpoint,通知jobmanager,并开启下一阶段的事务,用于提交下个检查点的数据

4.jobmanager 收到所有任务的通知,发出确认信息,表示checkpoint 完成

5.sink 任务收到jobmanager 的确认信息,正式提交这段时间的数据

6.外部kafka关闭事务,提交的数据可以正常消费了

相关文章

网友评论

    本文标题:Flink容错机制-两阶段提交

    本文链接:https://www.haomeiwen.com/subject/lvwkhrtx.html