Flink 端到端一致性

  • 1.at-most-once: 故障发生之后,计数结果可能丢失。同样的还有udp。

  • 2.at-least-once: 计数程序在发生故障后可能多算,但是绝不会少算。

  • 3.exactly-once: 这指的是系统保证在发生故障后得到的计数结果与正确值一致。
    Flink的一个重大价值在于,它既保证了exactly-once,也具有低延迟和高吞吐的处理能力。

  • 1.内部保证 —— 依赖checkpoint

  • 2.source 端 —— 需要外部源可重设数据的读取位置

  • 3.sink 端 —— 需要保证从故障恢复时,数据不会重复写入外部系统

而对于sink端,又有两种具体的实现方式:幂等(Idempotent)写入和事务性(Transactional)写入。
1.幂等写入
所谓幂等操作,是说一个操作,可以重复执行很多次,但只导致一次结果更改,也就是说,后面再重复执行就不起作用了。
比如向hash表中写入数据.
2.事务写入
需要构建事务来写入外部系统,构建的事务对应着 checkpoint,等到 checkpoint 真正完成的时候,才把所有对应的结果写入 sink 系统中。
对于事务性写入,具体又有两种实现方式:预写日志(WAL)和两阶段提交(2PC)。DataStream API 提供了GenericWriteAheadSink模板类和TwoPhaseCommitSinkFunction 接口,可以方便地实现这两种方式的事务性写入。

sink&source不可重置可重置
任意At-most-onceAt-least-once
幂等At-most-onceExactly-once(故障时会出现暂时不一致)
预写日志At-most-onceAt-least-once
两阶段提交At-most-onceExactly-once
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值