30 | 流计算与消息(二):在流计算中使用Kafka链接计算任务
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了如何在流计算中使用Kafka实现端到端的Exactly Once语义。首先,文章解释了流计算框架的分布式特点和数据持久化问题,然后详细介绍了Flink如何通过CheckPoint机制保证计算任务的Exactly Once语义。接着,文章讨论了Flink与Kafka配合实现端到端Exactly Once的原理,包括Flink基于两阶段提交算法实现的分布式事务控制器。通过对Kafka的事务和生产幂等特性的利用,结合Flink的CheckPoint机制和分布式事务控制器,实现了端到端的Exactly Once语义。文章还提供了一个实战案例,展示了如何使用Java语言实现具备Exactly Once特性的实时统计任务。总的来说,本文内容深入浅出,对于想要了解流计算与消息处理的读者具有很高的参考价值。
《消息队列高手课》,新⼈⾸单¥59
全部留言(9)
- 最新
- 精选
- DFighting关于思考题,我在infoQ上找了一篇文章https://www.infoq.cn/article/58bzvIbT2fqyW*cXzGlG,不知道是不是这么实现的,请老师帮忙看下。
作者回复: 是这样的。
2019-10-2814 - 张天屹老师你好,能介绍下Kafka 配合 Flink,与Kafka Stream 的核心区别吗
作者回复: Kafka Stream目前来说,相关的生态还不够成熟,可以了解一下,但不建议在生产系统中使用。 它和flink最大的区别是,它是一个库,运行在你的应用程序进程内,而不是一个流计算框架。
2019-10-053 - Geek_c24555老师好,请问下 rocketmq 可以配合 flink 实现exactly once 吗
作者回复: 据我了解,RocketMQ目前还没有支持。你可以跟踪一下这个Issue:https://github.com/apache/rocketmq-externals/issues/500
2020-06-132 - jack老师,使用spark streaming 和kafka时, 1、spark官方文档说,如果保存到checkpoint和把offset 提交到kafka,必须保证输出是幂等的,光使用事务是不行的; 2、那么如果无法保证输出是幂等的,是否只能把offset 保存在第三方的数据库(比如redis)中,但是这样做是否是不可以设置checkpoints ?否则spark依然会从checkpoint中读取,和从数据库中读取会造成冲突呢? 3、但不设置checkpoint,spark如何恢复现场呢?在提交命令时加入--supervise,好像yarn的模式不支持?即使使用supervise重启,没有checkpoint,也无法恢复现场吧?
作者回复: A1:是这样的,所以Kafka的Exactly Once特性中是有事务和生产幂等(相当于流计算输出幂等)二个功能组成的。 A2:这个方法不太可行,因为你很难做到完美的故障恢复。原因我在课程中也讲到了。 A3:具体操作细节层面的问题,还是建议你以官方的文档为准。
2019-10-092 - 不惑ing第25章讲kafka exactly once需要从kafka topicA读取计算再保存到kafka topocB,但从这章讲的流程看,最后不需要保存到kafka topicB,保存到其他hdfs里也可以, 所以最后一步保存位置有具体要求吗?
作者回复: 理论上是可以的,但是实际上hdfs没有原生事务支持,实现起来比较困难。
2019-10-062 - i_chasekafka ==> flink ==> kafka虽然实现了exactly once,但是最终进入output kafka的数据不也需要消费出来的吗? 是不是因为这里从output topic消费只是打印一下消息,即使重复消费也没关系?2022-03-28
- Geek_7825d4Flink 中有个 AsyncIO 算子,自身提供了 Exactly Once 语义,但是一致有个问题不太清楚,AsyncIO 为了提升性能,提供异步无序处理的方式,这种情况下,假设有一个 offset 为 1 的数据 阻塞在异步中,会不会有1一个 offset 为 2 的消息已经被处理完了,并继续向下游发送。 此时当 2 已经端到端完成时, Flink 是否会向 Kafka Source 提交 2 位置的偏移量呢,这样如何保证 Exactly Once 呢2021-03-24
- Heaven看了上面同学的留下的文章,发现Flink是维护两个位置offset和commitedOffset,内部在进行快照保存的时候,保存了offset作为快照内部位置,在快照完成之后,会变动维护的commitedOffset属性值,将变更后的commitedOffset提交到Kafka brokers或者ZK中2021-02-20
- 长脖子树正好最近在看 flink , 这部分端到端的 exactly once 实现讲得很清晰!2020-08-26