上篇文章说道,datax目前版本只支持单机模式,单机性能容易出现瓶颈,因此在线上使用datax做数据同步的时候,配合调度系统进行使用是个普遍的选择,这里我们选用的是azkaban作为调度系统进行设计,对datax进行封装提供服务。
1、支持datax的服务调用,包括同步任务的执行、停止。
2、支持分数据源类型 / 输出数据源类型 / 租户名称 / 同步名称 / 运行状态 / 创建者的同步任务列表分页查询。
3、支持同步任务的状态查询,包括成功任务的指标查询;运行中任务的进度查询;失败任务的报错信息。
CREATE TABLE `data_sync_info` (
`sync_id` varchar(255) NOT NULL,
`sync_name` varchar(50) NOT NULL COMMENT '同步名称',
`sync_desc` varchar(255) DEFAULT NULL COMMENT '同步描述',
`sync_type` int(5) NOT NULL COMMENT '1-datax,预留字段可以后续替换同步引擎 ',
`exec_id` varchar(20) NOT NULL COMMENT 'az执行id',
`tenant_name` varchar(30) DEFAULT NULL COMMENT '租户名,这里的租户指的是对接datax service的各个平台',
`job_config` text DEFAULT NULL COMMENT 'datax的执行json',
`source_datasource_id` varchar(255) DEFAULT NULL COMMENT '来源数据源id',
`source_datasource_type` varchar(20) NOT NULL COMMENT '原始数据源类型',
`target_datasource_id` varchar(255) DEFAULT NULL COMMENT '目标数据源id',
`target_datasource_type` varchar(20) NOT NULL COMMENT '目标数据源类型',
`running_status` int(5) NOT NULL COMMENT '0-同步中 1-同步失败 2-同步成功',
`running_msg` text DEFAULT NULL COMMENT 'datax的任务运行成功指标情况或者任务运行失败详情',
`start_time` datetime DEFAULT NULL,
`end_time` datetime DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`create_by` varchar(255) NOT NULL DEFAULT NULL COMMENT '任务提交者',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`sync_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1、datax-service模块为自己实现的模块,用于承载外部系统的数据同步需求,以http的方式暴露服务接口,提供任务执行、任务停止、任务列表、任务状态的功能。定时任务采用elastic-job用于周期性地对正在运行的任务进行任务状态更新、任务信息更新(包括任务运行进度、任务成功指标、任务失败信息等)。
2、datax-scheduler模块为自己实现的模块,用于做azkaban上的调度任务,datax-service在进行任务执行、任务停止、以及同步任务状态/信息等操作时,通过azkaban-api与datax-scheduler进行交互。任务状态更新、任务信息更新是通过对datax-scheduler的日志进行解析实现。
3、datax-core表示alibaba datax原生的datax打包工程,带有bin、conf、plugin等目录,需要在每个azkaban executor节点都部署一套放在固定可执行目录。
4、这里用aws s3作为文件存储,用于保存同步任务的datax执行json文件,datax-scheduler在执行时,会去s3上拉取文件到azkaban executor的指定目录下进行执行
简要描述
新建同步任务,并进行执行
请求接口
|
请求方式
请求参数说明
参数名 |
类型 |
说明 |
是否必填 |
---|---|---|---|
|
String | 同步任务名称 | 是 |
|
String | 同步任务描述 | 否 |
|
Integer | 同步任务描类型 1-datax | 是 |
|
String | 租户名 | 否 |
|
String | datax的执行json | 是 |
|
String | 来源数据源id | 否 |
|
String | 原始数据源类型 | 是 |
|
String | 目标数据源id | 否 |
|
String | 目标数据源类型 | 是 |
|
String | 创建者 | 是 |
请求参数示例
|
返回参数说明
参数名 |
参数类型 |
参数说明 |
---|---|---|
|
String | 同步任务id |
|
String | 同步任务名 |
|
String | 同步任务详情 |
|
Integer | 同步任务类型 1-datax |
|
String | az执行id |
|
String | 租户名称 |
jobConfig | String | datax的执行json |
|
Integer | 运行状态 0-同步中 1-同步失败 2-同步成功 3-已停止 |
|
String | 运行信息,见附录:运行信息说明 |
startTime | String | 开始时间 |
endTime | String | 结束时间 |
|
String | 任务创建时间 |
|
String | 创建者 |
|
String | 任务更新时间 |
返回参数示例
|
简要描述
同步任务停止
请求接口
|
请求方式
请求参数说明
请求参数示例
|
返回参数示例
|
简要描述
同步任务任务列表接口(根据输入 数据源类型 / 输出数据源类型 / 租户名称 / 同步名称 / 运行状态 / 创建者 分页查询)
请求接口
|
请求方式
请求参数说明
参数名 |
类型 |
说明 |
是否必填 |
---|---|---|---|
|
String | 同步名称 | 否 |
|
Integer | 同步类型 1-datax | 否 |
|
String | 租户名称 | 否 |
|
String | 原始数据源类型 | 否 |
|
String | 原始数据源id | 否 |
|
String | 目标数据源类型 | 否 |
|
String | 目标数据源id | 否 |
|
Integer | 运行状态 0-同步中 1-同步失败 2-同步成功 | 否 |
|
Integer | 页号 | 是 |
|
Integer | 页长 | 是 |
请求参数示例
|
返回参数说明
参数名 |
参数类型 |
参数说明 |
---|---|---|
|
JSONArray | 同步任务列表,见list说明 |
|
Integer | 分页总数 |
list参数说明
参数名 |
参数类型 |
参数说明 |
---|---|---|
|
String | 同步任务id |
|
String | 同步任务名 |
|
String | 同步任务详情 |
|
Integer | 同步任务类型1-datax |
|
String | az执行id |
|
String | 租户名称 |
jobConfig | String | datax的执行json |
|
Integer | 运行状态 0-同步中 1-同步失败 2-同步成功 3-已停止 |
|
String | 运行信息,见附录:运行信息说明 |
startTime | String | 开始时间 |
endTime | String | 结束时间 |
|
String | 任务创建时间 |
|
String | 创建者 |
|
String | 任务更新时间 |
返回参数示例
|
简要描述
同步任务详情批量查询(包括基本信息、任务状态)
请求接口
|
请求方式
请求参数说明
参数名 |
类型 |
说明 |
是否必填 |
---|---|---|---|
|
String | 同步任务id | 是 |
请求示例
|
返回参数说明
参数名 |
参数类型 |
参数说明 |
---|---|---|
|
JSONArray | 同步任务列表,见list说明 |
list说明
参数名 |
参数类型 |
参数说明 |
---|---|---|
|
String | 同步任务id |
|
String | 同步任务名 |
|
String | 同步任务详情 |
|
Integer | 同步任务类型1-datax |
|
String | az执行id |
|
String | 租户名称 |
jobConfig | String | datax的执行json |
|
Integer | 运行状态 0-同步中 1-同步失败 2-同步成功 3-已停止 |
|
String | 运行信息,见附录:运行信息说明 |
startTime | String | 开始时间 |
endTime | String | 结束时间 |
|
String | 任务创建时间 |
|
String | 创建者 |
|
String | 任务更新时间 |
返回示例
|
|
|
|
代码资源已上传:datax基于azkaban调度的服务实现代码 (包含datax-service和datax-scheduler)
对于同步任务执行的时候的租户设置功能没有执行,感兴趣的胖友可以通过azkaban的user.to.proxy自行进行实现