大解密:Flink恰巧语义一次消费,怎么保证?

我们都知道Flink在流式处理上性能强大,且很好地支持ExactlyOnce语义;且这也是Flink核心的技术点,所以成为面试官喜欢追问的一个话题:Flink恰巧语义一次消费,怎么保证?

     在这个思维导图进行了详细的描述及说明。欢迎阅读及下载超全干货--Flink思维导图,花了3周左右编写、校对。 下载链接:Flink_思维导图(干货).xmind.zip

上述思维导图中也进行了详细地描述:Flink_思维导图(干货).xmind.zip截图如下: 


如果面试官问到,可以大致从这些方面进行分析:

Flink是由source --> transformation --> sink三部分组成;也就是说Flink要实现ExactlyOnce语义与这三者脱不了干系;

  1. 数据源Source,首先要支持ExactlyOnce,比如Kafka;
  2. 接着需要对Flink开启checkpoint机制;即开启状态后端,保存其偏移量及中间状态数据;
  3. Sink端需要支持写覆盖也就是我们经常说的幂等性或者支持事务(两阶段提升)

Flink中的checkpoint具体操作如下:

            使用FlinkKafkaConsumer,开启CheckPointing,偏移量会保存通过CheckPoint保存到StateBackend中,并且默认会将偏     移量写入Kafka的特殊topic中,即:__consumer_offsets

            FlinkKafkaConsumr的setCommitOffsetsOnCheckpoints参数默认true,即将偏移量写入到Kafka特殊的Topic中,目的是为了监控或重启任务没有指定savePoint时可以接着一起的偏移量继续消费并且设置CheckpointingMode.EXACTLY_ONCE

            Barrier【隔离带】可以保证一个流水线中的所有算子都处理成功了,才会对该条数据做CheckPoint

存储系统不支持覆盖的话,就得要支持事务,成功了提交事务和更新偏移量,如果失败可以回滚且不更新偏移量

 


文章最后,给大家推荐一些受欢迎的技术博客链接

  1. Hadoop相关技术博客链接
  2. Spark 核心技术链接
  3. JAVA相关的深度技术博客链接
  4. 超全干货--Flink思维导图,花了3周左右编写、校对
  5. 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
  6. 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
  7. 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂

 


欢迎扫描下方的二维码或 搜索 公众号“10点进修”,我们会有更多、且及时的资料推送给您,欢迎多多交流!

                                           

       

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不埋雷的探长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值