回复:回复: Re: Flink实现Kafka到Mysql的 End-To-End Exactly-Once中遇到的问题

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

回复:回复: Re: Flink实现Kafka到Mysql的 End-To-End Exactly-Once中遇到的问题

王伟军
首先要明确一个问题,MySQL是否支持跨Connection的事务呢?
举个例子:假设Connection A执行事务 T 到commit()方法的时候,Connection A断开(A即为 TwoPhaseCommitSinkFunction 中的pendingCommitTransactions),那么之后建立的一个新的Connection B是否可以commit事务T呢?(我目前的经验是不能,如果可以,请指出)


如果不能,那么MySQL不适用于用2PC这种方法来做端到端一致性的保证
尝试使用幂等来解决端到端的一致性




------------------ 原始邮件 ------------------
发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email]&gt;;
发送时间:&nbsp;2020年7月31日(星期五) 上午9:21
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;回复: Re: Flink实现Kafka到Mysql的 End-To-End Exactly-Once中遇到的问题



我参考你的代码,也遇到了同样的问题,有什么好的方法吗?



[hidden email]
&nbsp;
发件人: 卢伟楠
发送时间: 2020-01-03 15:18
收件人: user-zh
主题: Re: Flink实现Kafka到Mysql的 End-To-End Exactly-Once中遇到的问题
我发这个用于测试的代码,里面的mysql-connector-java已经是最新的了,由于使用mysql-connector-java老版本趟过的坑已经处理过一遍了
&nbsp;
&gt; 在 2020年1月3日,下午3:13,残翅2008 <[hidden email]&gt; 写道:
&gt;
&gt; 对于第1个问题尝试使用mysql-connector-java的latest版本
&gt; 我之前使用5.1.6版本遇到同样的问题
&gt; 改为5.1.48比较稳定
&gt; <dependency&amp;gt;
&gt; &amp;nbsp; &amp;nbsp; <groupId&amp;gt;mysql</groupId&amp;gt;
&gt; &amp;nbsp; &amp;nbsp; <artifactId&amp;gt;mysql-connector-java</artifactId&amp;gt;
&gt; &amp;nbsp; &amp;nbsp; <version&amp;gt;5.1.48</version&amp;gt;
&gt; </dependency&amp;gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"LakeShen"<[hidden email]&amp;gt;;
&gt; 发送时间:&amp;nbsp;2019年12月26日(星期四) 中午11:35
&gt; 收件人:&amp;nbsp;"user-zh"<[hidden email]&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: Flink实现Kafka到Mysql的 End-To-End Exactly-Once中遇到的问题
&gt;
&gt;
&gt;
&gt; 是否可以尝试使用幂等来解决 端到端的一致性
&gt;
&gt; Best wishes,
&gt; 沈磊
&gt;
&gt; 卢伟楠 <[hidden email]&amp;gt; 于2019年12月25日周三 下午4:09写道:
&gt;
&gt; &amp;gt; 各位大佬好:
&gt; &amp;gt;
&gt; &amp;gt; 最近是实现Kafka到Mysql的 End-To-End Exactly-Once中遇到以下2个问题:
&gt; &amp;gt; 1:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
&gt; &amp;gt; Communications link failure during commit(). Transaction resolution unknown.
&gt; &amp;gt; 2:org.apache.flink.streaming.runtime.tasks.TimerException:
&gt; &amp;gt; org.apache.flink.streaming.runtime.tasks.ExceptionInChainedOperatorException:
&gt; &amp;gt; Could not forward element to next operator
&gt; &amp;gt;
&gt; &amp;gt; 已经做了一个最简单的复现问题的demo,求指教
&gt; &amp;gt; git clone https://github.com/lusecond/flink_help --depth=1
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 测试过程中,发现继承TwoPhaseCommitSinkFunction类的4个重写方法beginTransaction、preCommit、commit、abort
&gt; &amp;gt; 分别在不同的线程工作,怀疑过因为线程切换导致jdbc的事务提交出问题,已经做过相关测试排除不是由此引起的问题