目标:
- 框架扩展性
- 抽象(领域抽象)
- 边界的context和pojo的定义
- 过程的描述(Engine)
- 核心概念
- 解决的问题
- 多种数据源之间的数据同步
- 基础能力的应用
DDataX模型结构的解读
底层能力:
- JarLoader:加载类文件,从Jar中;类似类加载器;
- 系统属性操作
- 线程池管理和处理:任务执行、记录、通知
- 插件里的一些能力
- 连接池连接
- pojo转sql
- 项目的打包管理
- Java应用与系统交互
核心代码片
加载插件
```java
//com.alibaba.datax.core.job.JobContainer#preHandle classLoaderSwapper.setCurrentThreadClassLoader(LoadUtil.getJarLoader( handlerPluginType, handlerPluginName));
AbstractJobPlugin handler = LoadUtil.loadJobPlugin(
handlerPluginType, handlerPluginName);
JobPluginCollector jobPluginCollector = new DefaultJobPluginCollector(
this.getContainerCommunicator());
handler.setJobPluginCollector(jobPluginCollector);
<a name="oIklA"></a>
## 调度时分配
```java
com.alibaba.datax.core.container.util.JobAssignUtil#doAssign
根据配置调度
com.alibaba.datax.core.job.scheduler.AbstractScheduler#startAllTaskGroup
TaskExecutor: 用线程池去实现了核心的调度,如何做读到写的数据传递?
com.alibaba.datax.core.taskgroup.TaskGroupContainer.TaskExecutor
com.alibaba.datax.core.taskgroup.runner.ReaderRunner
com.alibaba.datax.core.taskgroup.runner.WriterRunner
RecordSender