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 jindy_liu <28...@qq.com> on 2020/07/09 02:55:35 UTC

Re: Re: Flink 多Sink 数据一致性保证

请问下,你这个最后是怎么做到的,能share下源码吗?
是需要将两个sink合并到一个sink里,然后再实现下二阶段提交吗?
我也遇到个多sink的原子性场景。



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: Re: Re: Re: Flink 多Sink 数据一致性保证

Posted by Yun Gao <yu...@aliyun.com.INVALID>.
是的,社区现在正在加exactly-oncer jdbc sink实现[1]。

另外,如果要实现两阶段提交的sink的话,总是需要有能跨session的transaction机制,就是在作业挂了之后,下次起来的时候这个事务还可以abort掉或者继续提交(取决于是否已经snapshot过了)。像jdbc必须要用xa事务,用单纯的jdbc事务应该就是有问题的,因为即使在snapshot的时候precommit过了,如果作业挂掉连接中断这个事务仍然会被abort掉。


[1] https://issues.apache.org/jira/browse/FLINK-15578

------------------------------------------------------------------
Sender:jindy_liu<28...@qq.com>
Date:2020/07/13 10:49:27
Recipient:<us...@flink.apache.org>
Theme:Re: Re: Re: Flink 多Sink 数据一致性保证

原理大概理解了,想自己实现一个。比如kafka与mysql的实现,并想最大程度的复用些代码。
看了下源码,感觉要把现在的connector(kafka,
jdbc)中的代码都看一下,然后扣出来,再去按twophasecommitsinkfunction的实现,重组一些代码,一个个方法实现。
另外问一下,好像现在源码里的jdbc只是at-least-once实现?



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: Re: Re: Flink 多Sink 数据一致性保证

Posted by jindy_liu <28...@qq.com>.
原理大概理解了,想自己实现一个。比如kafka与mysql的实现,并想最大程度的复用些代码。
看了下源码,感觉要把现在的connector(kafka,
jdbc)中的代码都看一下,然后扣出来,再去按twophasecommitsinkfunction的实现,重组一些代码,一个个方法实现。
另外问一下,好像现在源码里的jdbc只是at-least-once实现?



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: Re: Re: Flink 多Sink 数据一致性保证

Posted by Yun Gao <yu...@aliyun.com.INVALID>.
多个sink如果都按TwoPhaseCommitSinkFunction来做的话,是可以实现多sink一致性的。大体上可以认为只要有一个sink出错,整个作业都会failover,其它sink当前的事务也会跟着abort掉,然后整个作业回退到上一次checkpoint开始执行。


------------------------------------------------------------------
Sender:jindy_liu<28...@qq.com>
Date:2020/07/09 10:55:35
Recipient:<us...@flink.apache.org>
Theme:Re: Re: Flink 多Sink 数据一致性保证

请问下,你这个最后是怎么做到的,能share下源码吗?
是需要将两个sink合并到一个sink里,然后再实现下二阶段提交吗?
我也遇到个多sink的原子性场景。



--
Sent from: http://apache-flink.147419.n8.nabble.com/