01 引言

通过前面的博文,我们对DataX有了一定的深入了解了:

本文主要讲解的是DataX的任务分配以及执行的流程。

02 图解任务分配及执行流程

首先贴上自己整理的一张图:
DataX教程(07)- 图解DataX任务分配及执行流程_执行流程

主要就是用到了几个类

  • JobContainer:任务容器
  • Reader:读插件接口
  • Writer:写插件接口
  • JobAssignUtil:任务分配工具类
  • AbstractScheduler:任务调度抽象类
  • TaskGroupContainer:任务组容器

流程简要描述

  1. 首先在job.json读取job.setting.speed里的配置,有byterecordchannel
  2. JobContainer会先根据第一步的3个参数算出总通道数;
  3. JobContainer会调用不同的读写插件的split方法来为所有通道分分配任务配置;
  4. 分配好后,JobContainer合并任务配置,使用JobAssignUtil工具类来对所有通道的所有配置进行分组;
  5. 分组后,每个组的每个通道都有分配好的配置了,这个时候使用AbstractScheduler来调度任务;
  6. AbstractScheduler里面有个TaskExcutor内部类,主要用来执行读写线程;
  7. 读写线程里面会调用ReaderWriter插件里面的具体业务方法(init()prepare()startWriter()post())。

具体的详细描述,只要点大流程图就一目了然了。

03 文末

通过前面几篇博客的学习,基本把DataX读了一遍了,如有疑问,欢迎各位同学提出,本文完!