你好,

如果你希望端到端的 ExactlyOnce 需要 Sink 做一些事情,现在社区有一个 TwoPhaseCommitFunction[1]
用于支持这种特性,这里有一篇详细讲解的文章[2] 供参考。

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.9/api/java/org/apache/flink/streaming/api/functions/sink/TwoPhaseCommitSinkFunction.html
[2]
https://flink.apache.org/features/2018/03/01/end-to-end-exactly-once-apache-flink.html
Best,
Congxian


马卿云 <maqy1...@qq.com> 于2019年9月10日周二 下午5:09写道:

> 你好,
> 这种情况下应该就如jasine chen所说的那样,需要外部系统的支持,比如配合kafka的事务来提交。
>
>
>
> 祝好,
> maqy
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Jimmy Wong"<wangzmk...@163.com&gt;;
> 发送时间:&nbsp;2019年9月9日(星期一) 下午3:52
> 收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;
> 抄送:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
> 主题:&nbsp;回复:Kafka 与 extractly-once
>
>
>
> Hi, 卿云:
>
> 感谢你的回答!我知道Extractly-Once是指算子不同更新在结果上只反映一次,不是算子只进行一次计算。但是,对于我的这种场景,算子多次计算的结果都会发往下游,从而导致结果会反映算子每次更新。
>
>
> | |
> Jimmy
> |
> |
> wangzmk...@163.com
> |
> 签名由网易邮箱大师定制
>
>
> 在2019年09月9日 14:31,马卿云<454618...@qq.com&gt; 写道:
> &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
> 应该会被再次消费,似乎现有的流式处理系统中所说的exactly once,实际上指的一般都是最终结果上是exactly
> once,而不是保证消息只被消费一次。也就是说,虽然有些消息被消费了多次,但是效果上等同于只被消费了一次。
> &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;知乎上看到的这篇文章里面有讲这个问题:
> &amp;nbsp; &amp;nbsp; &amp;nbsp;
> &amp;nbsp;端到端一致性,流系统Spark/Flink/Kafka/DataFlow对比总结(压箱宝具呕血之作) - 阿莱克西斯的文章 -
> 知乎&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> https://zhuanlan.zhihu.com/p/77677075
>
>
>
>
> 祝好,
> maqy
>
>
> ------------------ 原始邮件 ------------------
> 发件人:&amp;nbsp;"Jimmy Wong"<wangzmk...@163.com&amp;gt;;
> 发送时间:&amp;nbsp;2019年9月9日(星期一) 中午11:50
> 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
>
> 主题:&amp;nbsp;Kafka 与 extractly-once
>
>
>
> Hi,all:
> 请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从
> checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5
> 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证
> Extractly-Once 呢?
> | |
> Jimmy
> |
> |
> wangzmk...@163.com
> |
> 签名由网易邮箱大师定制

回复