ETL应用系统概要设计
一、系统目标
本系统旨在实现从数据仓库Doris同步数据到指定应用数据库,通过灵活的数据源管理、取数逻辑、调度与任务管理、消息与监控机制,满足企业级数据同步与集成需求。
二、系统架构
总体架构分层
- 数据源管理层:负责各类数据库连接与元数据管理。
- 取数管理层:实现数据抽取、筛选、转换逻辑。
- 调度管理层:基于Kafka消息驱动同步任务的执行。
- 任务管理层:任务的配置、执行、状态记录与反馈,支持任务日志与通知。
- 消息管理层:Kafka消息的收发、任务完成的通知与事件处理。
- 监控与日志层:系统运行、任务执行、异常等全流程监控与日志管理。
三、主要模块设计
1. 数据源管理模块(主要)
核心功能:
- 管理源端(如Doris、MySQL)与目标端(如MySQL、PostgreSQL等)数据库连接。
- 支持数据源的增、删、改、查。
- 记录数据源参数:host、port、schema、username、password等。
- 数据源连接测试与可用性校验。
关键表结构示例:
| id | type | host | port | schema | username | password | status | create_time |
|---|---|---|---|---|---|---|---|---|
| 1 | mysql | 10.0.0.1 | 3306 | mydb | user | ****** | active | 2025-06-12 |
| 2 | doris | 10.0.0.2 | 9030 | dw | doris | ****** | active | 2025-06-12 |
2. 数据清洗模块(主要)
核心功能:
- 配置从源数据仓库(Doris)取数的筛选逻辑,包括表、字段、筛选条件、分页、增量策略等。
- 支持简单SQL配置或可视化条件配置。
- 与任务配置联动,支持灵活的数据获取逻辑复用。
示例配置:
- 源表:doris.dw_user
- 筛选条件:status='active' AND updated_at > '2025-06-01'
- 字段映射:支持字段重命名与类型转换
3. 调度管理模块(主要)
核心功能:
- 基于Kafka消息驱动的调度机制。
- Doris等数据准备完成后,向Kafka指定topic发送同步消息。
- 调度服务监听Kafka消息,自动触发数据同步任务执行。
- 支持并发、重试、失败告警等调度策略。
流程示例:
- Doris数据准备完毕 → Kafka Topic生产消息
- 调度管理模块消费消息 → 触发下游同步任务
- 同步任务完成->通知下游完成同步
4. 任务管理模块(主要)
核心功能:
- 任务配置:选择源数据源、目标数据源、取数逻辑等。
- 任务执行:自动/手动触发数据同步,执行取数、转换、写入目标库。
- 任务日志:记录同步成功/失败、同步数量、耗时等明细。
- 任务通知:支持Kafka消息、数据库写入结果、查询API等多样反馈方式。
- 任务查询接口:可按任务ID、状态、时间区间查询任务执行情况。
任务表结构示例:
| id | src_datasource | dst_datasource | extract_id | status | sync_count | start_time | end_time | message |
|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1001 | success | 10000 | 2025-06-13 | 2025-06-13 | ok |
5. 消息管理模块
核心功能:
- Kafka消息Topic、分区等管理。
- 任务完成、失败等事件的消息存储与转发(通知下游系统或管理员)。
- 支持消息模板、批量发送、重发等机制。
- 消息历史记录与查询。
6. 监控日志模块
核心功能:
- 全流程日志采集:包括数据源连接、取数、任务执行、消息收发等关键环节。
- 支持实时日志流、历史日志检索、异常日志报警。
- 关键监控指标:任务成功率、同步延迟、失败次数、系统资源占用等。
- 提供接口或仪表盘展示监控结果。
四、典型流程(文字版)
- 数据源管理:管理员配置/维护源端和目标端的数据源信息。
- 取数管理:通过SQL或条件配置方式,定义每个任务的数据筛选和抽取逻辑。
- 调度管理:Doris数据准备完毕后,向Kafka发送“数据已就绪”消息。
- 任务管理:调度模块收到Kafka消息后,自动执行对应任务,同步数据到目标数据库。
- 消息管理:任务执行结果、异常等通过Kafka消息或其他方式推送至下游或管理端。
- 监控日志:全流程产生的日志实时收集、存储、检索、报警,便于运维监控和问题追溯。
五、技术选型建议
- 数据库访问:JDBC/SQLAlchemy等
- 消息队列:Kafka
- 后端:Spring Boot
- 日志与监控:ELK (Elasticsearch + Logstash + Kibana)
- 任务调度/编排:可集成Airflow等高级调度器
六、后续可扩展方向
- 支持更多类型的数据源适配(如Oracle、SQLServer等)
- 数据治理与血缘分析
- 图形化任务编排与监控
评论