介绍
datax是阿里开源作为数据同步工具,支持多种数据源交叉同步,具体可见https://github.com/alibaba/DataX 还有参考datax实现的flinkx,通过flink去实现,https://github.com/DTStack/chunjun 阿里开源的datax只是一个单机版,具体要用到公司的业务中,我们还是需要进行包装一下,才能用的方便。因此笔者在工作期间花了很多时间去改造datax,让它变得更加易用。本文主要是通俗介绍datax的原理。
源码分析
主要原理简单来说,就是一个读天博app官网入从各种数据源读取数据,放到一个队列里,另外一个写天博app官网入从这个队列里取数据。在写天博app官网入取数据前还可以对数据进行etl处理。
具体的datax执行job主要分为这么几步。
- 拆分任务。为拆读任务和写任务,且读写任务最终拆出来的结果要1:1。
- 执行任务。拆出来的任务,封装成一组又一组的天博app官网入进行执行。
- 在任务运行期间进行数据统计。
具体实现可查看代码TaskGroupContainer类型,这个类包含了任务具体的执行过程。