回复:Kafka 与 extractly-once

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

回复:Kafka 与 extractly-once

马卿云
        应该会被再次消费,似乎现有的流式处理系统中所说的exactly once,实际上指的一般都是最终结果上是exactly once,而不是保证消息只被消费一次。也就是说,虽然有些消息被消费了多次,但是效果上等同于只被消费了一次。
       知乎上看到的这篇文章里面有讲这个问题:
       端到端一致性,流系统Spark/Flink/Kafka/DataFlow对比总结(压箱宝具呕血之作) - 阿莱克西斯的文章 - 知乎        https://zhuanlan.zhihu.com/p/77677075




祝好,
maqy


------------------ 原始邮件 ------------------
发件人:&nbsp;"Jimmy Wong"<[hidden email]&gt;;
发送时间:&nbsp;2019年9月9日(星期一) 中午11:50
收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;

主题:&nbsp;Kafka 与 extractly-once



Hi,all:
请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从 checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证 Extractly-Once 呢?
| |
Jimmy
|
|
[hidden email]
|
签名由网易邮箱大师定制
Reply | Threaded
Open this post in threaded view
|

回复:Kafka 与 extractly-once

Jimmy Wong
Hi, 卿云:
感谢你的回答!我知道Extractly-Once是指算子不同更新在结果上只反映一次,不是算子只进行一次计算。但是,对于我的这种场景,算子多次计算的结果都会发往下游,从而导致结果会反映算子每次更新。


| |
Jimmy
|
|
[hidden email]
|
签名由网易邮箱大师定制


在2019年09月9日 14:31,马卿云<[hidden email]> 写道:
&nbsp; &nbsp; &nbsp; &nbsp; 应该会被再次消费,似乎现有的流式处理系统中所说的exactly once,实际上指的一般都是最终结果上是exactly once,而不是保证消息只被消费一次。也就是说,虽然有些消息被消费了多次,但是效果上等同于只被消费了一次。
&nbsp; &nbsp; &nbsp; &nbsp;知乎上看到的这篇文章里面有讲这个问题:
&nbsp; &nbsp; &nbsp; &nbsp;端到端一致性,流系统Spark/Flink/Kafka/DataFlow对比总结(压箱宝具呕血之作) - 阿莱克西斯的文章 - 知乎        https://zhuanlan.zhihu.com/p/77677075




祝好,
maqy


------------------ 原始邮件 ------------------
发件人:&nbsp;"Jimmy Wong"<[hidden email]&gt;;
发送时间:&nbsp;2019年9月9日(星期一) 中午11:50
收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;

主题:&nbsp;Kafka 与 extractly-once



Hi,all:
请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从 checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证 Extractly-Once 呢?
| |
Jimmy
|
|
[hidden email]
|
签名由网易邮箱大师定制
Reply | Threaded
Open this post in threaded view
|

回复:Kafka 与 extractly-once

马卿云-2
你好,
这种情况下应该就如jasine chen所说的那样,需要外部系统的支持,比如配合kafka的事务来提交。



祝好,
maqy


------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Jimmy Wong"<[hidden email]&gt;;
发送时间:&nbsp;2019年9月9日(星期一) 下午3:52
收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
抄送:&nbsp;"user-zh"<[hidden email]&gt;;
主题:&nbsp;回复:Kafka 与 extractly-once



Hi, 卿云:
感谢你的回答!我知道Extractly-Once是指算子不同更新在结果上只反映一次,不是算子只进行一次计算。但是,对于我的这种场景,算子多次计算的结果都会发往下游,从而导致结果会反映算子每次更新。


| |
Jimmy
|
|
[hidden email]
|
签名由网易邮箱大师定制


在2019年09月9日 14:31,马卿云<[hidden email]&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"<[hidden email]&amp;gt;;
发送时间:&amp;nbsp;2019年9月9日(星期一) 中午11:50
收件人:&amp;nbsp;"[hidden email]"<[hidden email]&amp;gt;;

主题:&amp;nbsp;Kafka 与 extractly-once



Hi,all:
请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从 checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证 Extractly-Once 呢?
| |
Jimmy
|
|
[hidden email]
|
签名由网易邮箱大师定制
Reply | Threaded
Open this post in threaded view
|

Re: Kafka 与 extractly-once

Congxian Qiu
你好,

如果你希望端到端的 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


马卿云 <[hidden email]> 于2019年9月10日周二 下午5:09写道:

> 你好,
> 这种情况下应该就如jasine chen所说的那样,需要外部系统的支持,比如配合kafka的事务来提交。
>
>
>
> 祝好,
> maqy
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Jimmy Wong"<[hidden email]&gt;;
> 发送时间:&nbsp;2019年9月9日(星期一) 下午3:52
> 收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
> 抄送:&nbsp;"user-zh"<[hidden email]&gt;;
> 主题:&nbsp;回复:Kafka 与 extractly-once
>
>
>
> Hi, 卿云:
>
> 感谢你的回答!我知道Extractly-Once是指算子不同更新在结果上只反映一次,不是算子只进行一次计算。但是,对于我的这种场景,算子多次计算的结果都会发往下游,从而导致结果会反映算子每次更新。
>
>
> | |
> Jimmy
> |
> |
> [hidden email]
> |
> 签名由网易邮箱大师定制
>
>
> 在2019年09月9日 14:31,马卿云<[hidden email]&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"<[hidden email]&amp;gt;;
> 发送时间:&amp;nbsp;2019年9月9日(星期一) 中午11:50
> 收件人:&amp;nbsp;"[hidden email]"<[hidden email]&amp;gt;;
>
> 主题:&amp;nbsp;Kafka 与 extractly-once
>
>
>
> Hi,all:
> 请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从
> checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5
> 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证
> Extractly-Once 呢?
> | |
> Jimmy
> |
> |
> [hidden email]
> |
> 签名由网易邮箱大师定制