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