随着etl组同步数据任务的增加,原有架构和流程难以满足当前业务场景。原有架构中,kettle管理调度和执行任务多功能并用,由于kettle软件的局限性,不足以行使调度角色的功能,调度任务时,使用线性模型,并随着调度任务的增多,任务维护和监控工作逐渐繁重,机器资源消耗过多。本项目使用网状模型重构ETL架构,将调度从kettle中分离,参考开源项目azkaban部分流程,使用python重写代码逻辑。
本文档用于产品策划与研发,为技术开发人员及测试人员提供规格依据。
原有流程以kettle为中心,根据优先级取作业,同接口下任务线性执行。
主要配置: 任务配置:接口表、调度表、调度前置表等; kettle配置:数据库配置表、数据传输表、文本配置表等; 注:该数据库设计调度和执行模块耦合过于紧密
主要配置: 调度配置:项目表、执行job表; 触发器配置:触发器表; 执行表:执行流表; 日志表:job执行日志表; 注:该数据库设计中longblob类型字段过多,直接将字段序列化后存入,设计数据库过于偷懒
页面名称 | URI | 描述 |
---|---|---|
登录 | /login/ | 登入、登出 |
接口 | /interface/ | 增改查,详情,列表 |
任务 | /job/ | 增改查,详情,列表 |
调度 | /dispatch/ | 增改查,详情,列表,执行,暂停,恢复 |
调度预警 | /dispatch/alert/ | 增改查,详情,列表 |
预警配置 | /base/alert/ | 增改查,列表 |
执行服务器 | /base/exec/host/ | 增改查,列表 |
执行 | /execute/ | 详情,日志,列表,拓扑 |
8个模块,共20多个页面
主要配置: 用户配置:用户、角色、权限表; 任务配置:接口、任务表; 调度配置:调度、持久化、调度预警表; 执行配置:执行、详情表;
系统:Win或Linux 语言:Python 3.6.4 框架:后端-Flask、前端-Echarts、UI-layui
HCNDC-web
├─conn # 数据库连接类
├─document # 接口文档类
├─filters # 接口过滤类
├─models # 模型类
├─operations # 操作类
├─resources # 接口入口类
├─route # 路由类
├─rpc # rpc客户端
├─scheduler # 调度线程类
├─server # 项目常用类
├─static # 静态资源
│ ├─css
│ ├─echarts
│ ├─fonts
│ ├─images
│ ├─js # 各页面前端事件、渲染
│ │ ├─base
│ │ ├─dispatch
│ │ ├─execute
│ │ ├─interface
│ │ ├─job
│ │ └─util
│ └─layui # UI模块
│ ├─css
│ │ └─modules
│ │ ├─laydate
│ │ │ └─default
│ │ └─layer
│ │ └─default
│ ├─font
│ ├─images
│ │ └─face
│ └─lay
│ └─modules
├─templates # 前端模板
│ ├─base
│ ├─dispatch
│ ├─exception
│ ├─execute
│ ├─interface
│ ├─job
│ └─util
├─util # 基础类
└─verify # 参数过滤类
关键字,以后写
权限模块
矢量图: 深拷贝,浅拷贝
日历插件
api文档
日志过多影响性能 fluentd+mongo
微服务+docker 容器轻量化
权限管理
响应时间500ms
栅格系统
wc -l `find -path ./venv -prune -o -name '*py'`
orm封装
Celery, rpc, kafka 集群服务
azkaban序列化, 反序列化
/home/xuexiang/azkaban-2.5.0/azkaban-executor-2.5.0/executions
ProcessBuilder
apscheduler持久化 防止宕机
WSGI接口
rpc通信 封装tpc协议
show global variables like 'wait_timeout';
SELECT @@wait_timeout;
db.getCollection('scheduler_lock').createIndex({"export": 1}, {expireAfterSeconds: 0})//分布式锁超时索引
fluentd——日志流处理工具
mongdb——日志存储数据库
mysql——配置数据库
python3.6——执行环境
uwsgi——web服务器
cd /HCNDC-web pip install -r requirements.txt
cd /HCNDC-exec pip install -r requirements.txt
执行"调度平台数据库ddl.txt"SQL语句
./代码/HCNDC-web/superconf.json ./代码/HCNDC-exec/superconf.json
配置主要字段说明:
1.mysql对象:mysql的配置
2.log对象:fluentd日志的配置
3.mongo对象:mongo数据库的配置
4.schedule对象:调度并发数,每个任务最大实例数配置
5.exec对象:执行端的端口,持久化的表名
6.master对象:服务端的IP和端口
cd /HCNDC-web python server.py
cd /HCNDC-exec python server.py