恩,主要是看flink 的发布里说flink
支持cdc了,感觉这个功能好像是我要的,感觉好像我要做的事情能用flink都搞定。就不用多个开源平台切换与维护多个组件了。

我原本还想先基于flink sql 将数据存量数据先全量导一次异构存储(如hbase, pgsql等)(批量),然后再flink cdc
把mysql的bin-log变化数据搬运到异构存储(如hbase,
pgsql等)后(增量),同时再镜像一份cdc后的kafka里的json数据到下游(变化通知)。

那么下游再基于镜像的kafka里的数据(变化)+异构的镜像数据,再基于flink去做一些实时计算的场景需求(比如最近一个月内的前多少名的数据等),不用都挤在mysql的从库在做一些分析了,并且有些分析也不适合在mysql上搞,一些olap类的。

但实际demo了吧,光一个数据的实时搬运里,要解决的问题还挺多的,光flink好像不太行(可能是我不太熟悉,我接触flink时间较短)
问题:
1、存量+实时数据怎么结合起来,目前语义上只能做到“至少一次”,先存量搬运,再binlog实时迁移,但难以定位存量搬运完后对应的kafka的起始消费位置。(但业务场景如果只需要“至少一次”,还是可以用的,业务大部分是只需“至少一次”)

2、db里多表有序:这里有kafka性能问题和有序保证问题;目前业务场景db表变化不太快,一天1百w行数据的变更,可以搞定,同时也可以按需的N张表有序,不用整个db实例里的全部表。但这个有序感觉用flink
sql cdc还不太好搞多表。如果直接写程序去消费

3、多sink怎么保证数据一致性:具体来说,在增量同步的时候,flink需要先sink 异构存储(先),后要sink
kafka(后),怎么保证两个sink的先后次序与原子性?

现请问下,flink 的sink能定义先后吗?
如上面的,将kafka里的canal-json数据取出后,能先写pgsql成功,再把json数据原封不动写kafka吗?如果目前不支持,可否自己改造下支持?





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

回复