首选感谢微信群里RC的各位老师,一早上都在问问题,感谢他们耐心回复!
RC的实时数据传输平台(CDC)前段时间就发布了,但是因为忙其他事,就没去研究学习,最近正好有一个小需求,erp出库单某个字段修改后同步到低代码平台中对应的单据字段中。一开始想通过写代码实现的。但是本着能不写代码的原则,我又打开了rc etl平台(简称平台),正好平台也升级到了全新的1.6版本,修复了不少bug,给RC点赞!我就升级到了1.6版本,开始了漫长的学习之路。
一、先介绍一下CDC、ETL流程、KAFKA之间的关系吧,在CDC里面有2中数据消费方式:
1、CDC读取过来的数据转成数据流直接交给ETL流程消费。
2、CDC读出来过来的数据存到KAFKA里面,KAFKA建立数据连接器,然后在交给ETL流程消费。
注意:不管是CDC直接给ETL流程,还是KAFKA给ETL流程,在ETL流程里面都是不需要输入组件的,这点一定要注意,CDC数据流直接给到ETL流程了。不需要您在配置任何输入组件去读取数据在操作。
二、接下来我介绍下具体的配置过程
1、配置CDC数据连接器
按照表单字段录入就可以,一定要注意连接器存储这里,如果选择kafka,CDC会把所有记录写到kafka中,想要消费就需要配置KAFKA连接器了,这里我们选择不存储,配置完成后点击保存就好了。吐槽一个地方,数据库表选择这块,如果数据库表太多会卡死,下拉搜索也很慢,这块可以优化下。
接下来我们配置消费者,这块就比较简单,选择一个流程然后点击保存就可以了。
激动人心的时候到了,我们要启动了,要启动了,点击启动,等待三秒,启动失败,请检测xxxx,原以为是美梦的开始,谁知道这里才是噩梦,坑,这里都是大坑。由于CDC依赖数据库的一些特性,比如表日志,binlog等,我们就要针对不同数据库去开启各种日志,这一点等待官方出具体文档。我数据库是mysql,我说一下遇到的2个问题:
1、没开启binlog,具体如何开启百度一下;
2、mysql的时区不对,具体如何设置百度一下;
当解决完这些问题后,在次点击开启,终于启动了,高兴的拍手手,这期间也算是踩了不少坑(还是个人能力不行),希望官网早日出CDC的文档拯救下我们这些小白。
三、配置ETL流程(既数据的消费者)
先简单按照个人的理解说下原理吧,CDC通过读取数据库日志或者其他方式,将内容形成数据流传递给ETL流程中,这里的ETL流程您可以理解为一段代码,捕获到了数据就执行下这段代码,我还曾纠结过,是不是这个ETL流程没运行所以导致没数据啊,这个ETL流程其实不用你手动触发或者设置调度,您可以直接理解为有了数据流程就执行,接下来我给大家讲解下ETL流程配置的过程。
重要的地方说三遍,别想着通过配置数据输入组件获取数据!数据在流里!
重要的地方说三遍,别想着通过配置数据输入组件获取数据!数据在流里!
重要的地方说三遍,别想着通过配置数据输入组件获取数据!数据在流里!
为什么别配置,因为数据在流里,数据在流里,不在KAFKA,或者数据库里面!我就傻乎乎的配置了一个kafka输入想着获取数据,结果怎么也不行。
下面是我配置流程的截图,我的配置很简单,也没处理json数据,直接配置了一个rest输出接口,把json内容发送给apaas平台。流里的json对象叫data,如果需要处理自己处理下。
有一个地方也说一下,如何判断这条数据是新增,还是删除,还是修改呢?流中的内容是json格式,json中有一个P_TAG_IUD,D-删除,U-更新,I-插入,数据消费方根据这个判断操作就可以了。
四、配置apaas平台的webhook
我们的apaas是明道云,我通过明道云新建了一个webhook用来接收变化数据,当mysql数据库数据发生变化时候CDC会调用ETL流程,ETL流程会调用明道云的webhook,将修改的单据数据传递过来,明道云找到对应本地数据记录,找到后直接修改对应字段即可。
明道云的webhook会根据调用方传递的数据自动生成对应的参数列表,这点真的相当不错,具体明道云如何配置我就不详细描述了。
五、总结
通过无代码的方式实现了数据发生变化时及时同步到三方系统的功能,利用CDC和APAAS大大提升了开发效率,降低了代码维护性,提高了应用建设的敏捷性。同时也对平台CDC配置流程有了基本了解,未来将继续深入挖掘RC ETL平台的功能,并深度应用到实际工作当中,期待RC ETL社区版本发布更多功能,感谢微信群RC各种老师的耐心指导,祝RC越来越好!
对于数据集成需求多的的用户一定要试试RC 的IPAAS平台啊,
真的是只有你想不到,没有你做不到的啊,真的是解放生产力工具啊。
---
作者:孙杰
来源:ETL社区(数据实时传输平台(CDC)与低代码平台(APAAS)数据集成-RestCloud)