datax(二)datax on azkaban架构设计之datax as a service

 

一、背景

上篇文章说道,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 同步任务执行接口

简要描述

  • 新建同步任务,并进行执行

请求接口

/api/gdatax/data_sync/v1/data_sync/start

请求方式

  • POST

请求参数说明

参数名

类型

说明

是否必填

syncName
String 同步任务名称
syncDesc
String 同步任务描述
syncType
Integer 同步任务描类型 1-datax
tenantName
String 租户名
jobConfig
String datax的执行json
sourceDatasourceId
String 来源数据源id
sourceDatasourceType
String 原始数据源类型
targetDatasourceId
String 目标数据源id
targetDatasourceType
String 目标数据源类型
creatorBy
String 创建者

 

请求参数示例

{

    "syncName":"xxx同步到xxx",

    "syncDesc":"同步个毛啊",

    "syncType":1,

    "tenantName":"GDMODELLING",

    "jobConfig""{\"job\":{\"setting\":{\"speed\":{\"channel\":10},\"errorLimit\":{\"record\":0,\"percentage\":0.02}},\"content\":[{\"reader\":{\"name\":\"mysqlreader\",\"parameter\":{\"username\":\"remote\",\"password\":\"hangzhoumeiri\",\"column\":[\"`id`\",\"`taskName`\",\"`templateId`\",\"`paramJson`\",\"`userId`\",\"`status`\",\"`jobs`\",\"`stage`\",\"`progress`\",\"`dataFilePath`\",\"`is_deleted`\",\"`create_time`\",\"`last_update_time`\",\"`result`\",\"`job_ids`\",\"`syn`\",\"`end_run_time`\",\"`start_run_time`\",\"`expect_execute_time`\",\"`task_info`\",\"`scheduler_task_id`\"],\"splitPk\":\"id\",\"connection\":[{\"table\":[\"task\"],\"jdbcUrl\":[\"jdbc:mysql://xxx:3306/data_operation\"]}]}},\"writer\":{\"name\":\"mysqlwriter\",\"parameter\":{\"username\":\"remote\",\"password\":\"hangzhoumeiri\",\"column\":[\"`id`\",\"`taskName`\",\"`templateId`\",\"`paramJson`\",\"`userId`\",\"`status`\",\"`jobs`\",\"`stage`\",\"`progress`\",\"`dataFilePath`\",\"`is_deleted`\",\"`create_time`\",\"`last_update_time`\",\"`result`\",\"`job_ids`\",\"`syn`\",\"`end_run_time`\",\"`start_run_time`\",\"`expect_execute_time`\",\"`task_info`\",\"`scheduler_task_id`\"],\"preSql\":[\"\&

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值