flink 端到端的 exactly-once(精确一次)

从source 到 flink的exactly-once  文章很多自己看。

问题来源于群里一个人的提问。

flink运算结果在落地的时候怎么保证exactly-once。

目前两种方式,

1、一种是利用幂等性。

举例说明,假设现在 要把mysql的数据同步到oracle。有Insert记录和update记录。怎么保证oracle中结果是正确的 。oracle中加一个主键。那么多次Insert的时候  由于主键的存在  最终结果是正确的。

对于多次 Update,  在数据有序的情况下 , 多次Update 最终结果 也是正确的。对于同一个id hash到同一个 kafka分区来保证 数据的有序。

 

2、第二种呢方法是利用事务性, 关系型数据库大多是支持事务的。如果要写入 es这样不支持事务的 存储器里边怎么办。

可以将flink的汇总数据写入 kafka,目前kafka的连接器是支持事务的,这个估计也就是为什么做实时数仓的要将汇总数据写入kafka的原因之一。 之后可以利用  ELK的ack机制来保证exactly-once 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值