目标:

  1. 框架扩展性
  2. 抽象(领域抽象)
    1. 边界的context和pojo的定义
    2. 过程的描述(Engine)
    3. 核心概念
  3. 解决的问题
    1. 多种数据源之间的数据同步
  4. 基础能力的应用

DDataX模型结构的解读

源码阅读:datax - 图1

底层能力:

  1. JarLoader:加载类文件,从Jar中;类似类加载器;
    1. 系统属性操作
  2. 线程池管理和处理:任务执行、记录、通知
  3. 插件里的一些能力
    1. 连接池连接
    2. pojo转sql
  4. 项目的打包管理
  5. Java应用与系统交互

    核心代码片

    加载插件

    ```java

//com.alibaba.datax.core.job.JobContainer#preHandle classLoaderSwapper.setCurrentThreadClassLoader(LoadUtil.getJarLoader( handlerPluginType, handlerPluginName));

  1. AbstractJobPlugin handler = LoadUtil.loadJobPlugin(
  2. handlerPluginType, handlerPluginName);
  3. JobPluginCollector jobPluginCollector = new DefaultJobPluginCollector(
  4. this.getContainerCommunicator());
  5. handler.setJobPluginCollector(jobPluginCollector);
  1. <a name="oIklA"></a>
  2. ## 调度时分配
  3. ```java
  4. com.alibaba.datax.core.container.util.JobAssignUtil#doAssign

根据配置调度

  1. com.alibaba.datax.core.job.scheduler.AbstractScheduler#startAllTaskGroup

TaskExecutor: 用线程池去实现了核心的调度,如何做读到写的数据传递?

  1. com.alibaba.datax.core.taskgroup.TaskGroupContainer.TaskExecutor
  2. com.alibaba.datax.core.taskgroup.runner.ReaderRunner
  3. com.alibaba.datax.core.taskgroup.runner.WriterRunner
  4. RecordSender