大数据_Flink_Java版_状态一致性(4)-事务写入_预写日志和两阶段提交---Flink工作笔记0079

本文探讨了Flink中两种事务写入方式:预写日志和两阶段提交。预写日志利用checkpoint批量写入,可能造成批处理延迟;两阶段提交则逐条预提交数据,确保事务性。Flink的TwoPhaseCommitSinkFunction接口用于实现两阶段提交。外部sink系统需支持事务且超时时间需匹配,以防止数据丢失。对比不同源和sink的一致性策略,预写日志和两阶段提交能实现不同程度的数据一致性保证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

然后我们来看事务写入,有两种方式,可以看到是预写日志 和两阶段提交.

可以看到sink中的事务,也具有原子性对吧

 

预写日志,可以看到他的思想就是,利用checkpoint,当checkpoint的完成的时候,再把数据,一次性的

写入到sink系统中去,因为checkpoint完成了,就代表,当时处理的那个数据后面的所有的数据就

都处理完了.在checkpoint创建中的时候,先把结果数据,进行缓存,存起来,当checkpoint完成的时候,

就可以把缓存的这一批数据一起写入到sink系统,可以看到.

这个预写日志也有问题对吧,什么问题?

他把结果写出变成了,批处理了类似于对吧,因为他就是先把数据攒起来,等checkpoint,创建

完毕,这批数据完全处理没问题了的时候,才回去写出sink.

   这个也相当于一个事务对吧,确认一批数据都处理没问题了再写出到sink

这里实现一个:GenericWriteAheadSink就可以了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添柴程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值