一、背景
上篇文章说道,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
四、架构设计
4.1 架构说明
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的指定目录下进行执行
五、接口文档
5.1 同步任务执行接口
简要描述
-
新建同步任务,并进行执行
请求接口
|
请求方式
- POST
请求参数说明
参数名 |
类型 |
说明 |
是否必填 |
---|---|---|---|
|
String | 同步任务名称 | 是 |
|
String | 同步任务描述 | 否 |
|
Integer | 同步任务描类型 1-datax | 是 |
|
String | 租户名 | 否 |
|
String | datax的执行json | 是 |
|
String | 来源数据源id | 否 |
|
String | 原始数据源类型 | 是 |
|
String | 目标数据源id | 否 |
|
String | 目标数据源类型 | 是 |
|
String | 创建者 | 是 |
请求参数示例
|