ETL应用系统概要设计

一、系统目标

本系统旨在实现从数据仓库Doris同步数据到指定应用数据库,通过灵活的数据源管理、取数逻辑、调度与任务管理、消息与监控机制,满足企业级数据同步与集成需求。


二、系统架构

总体架构分层

  • 数据源管理层:负责各类数据库连接与元数据管理。
  • 取数管理层:实现数据抽取、筛选、转换逻辑。
  • 调度管理层:基于Kafka消息驱动同步任务的执行。
  • 任务管理层:任务的配置、执行、状态记录与反馈,支持任务日志与通知。
  • 消息管理层:Kafka消息的收发、任务完成的通知与事件处理。
  • 监控与日志层:系统运行、任务执行、异常等全流程监控与日志管理。

三、主要模块设计

1. 数据源管理模块(主要)

核心功能:

  • 管理源端(如Doris、MySQL)与目标端(如MySQL、PostgreSQL等)数据库连接。
  • 支持数据源的增、删、改、查。
  • 记录数据源参数:host、port、schema、username、password等。
  • 数据源连接测试与可用性校验。

关键表结构示例:

idtypehostportschemausernamepasswordstatuscreate_time
1mysql10.0.0.13306mydbuser******active2025-06-12
2doris10.0.0.29030dwdoris******active2025-06-12

2. 数据清洗模块(主要)

核心功能:

  • 配置从源数据仓库(Doris)取数的筛选逻辑,包括表、字段、筛选条件、分页、增量策略等。
  • 支持简单SQL配置或可视化条件配置。
  • 与任务配置联动,支持灵活的数据获取逻辑复用。

示例配置:

  • 源表:doris.dw_user
  • 筛选条件:status='active' AND updated_at > '2025-06-01'
  • 字段映射:支持字段重命名与类型转换

3. 调度管理模块(主要)

核心功能:

  • 基于Kafka消息驱动的调度机制。
  • Doris等数据准备完成后,向Kafka指定topic发送同步消息。
  • 调度服务监听Kafka消息,自动触发数据同步任务执行。
  • 支持并发、重试、失败告警等调度策略。

流程示例:

  1. Doris数据准备完毕 → Kafka Topic生产消息
  2. 调度管理模块消费消息 → 触发下游同步任务
  3. 同步任务完成->通知下游完成同步

4. 任务管理模块(主要)

核心功能:

  • 任务配置:选择源数据源、目标数据源、取数逻辑等。
  • 任务执行:自动/手动触发数据同步,执行取数、转换、写入目标库。
  • 任务日志:记录同步成功/失败、同步数量、耗时等明细。
  • 任务通知:支持Kafka消息、数据库写入结果、查询API等多样反馈方式。
  • 任务查询接口:可按任务ID、状态、时间区间查询任务执行情况。

任务表结构示例:

idsrc_datasourcedst_datasourceextract_idstatussync_countstart_timeend_timemessage
1211001success100002025-06-132025-06-13ok

5. 消息管理模块

核心功能:

  • Kafka消息Topic、分区等管理。
  • 任务完成、失败等事件的消息存储与转发(通知下游系统或管理员)。
  • 支持消息模板、批量发送、重发等机制。
  • 消息历史记录与查询。

6. 监控日志模块

核心功能:

  • 全流程日志采集:包括数据源连接、取数、任务执行、消息收发等关键环节。
  • 支持实时日志流、历史日志检索、异常日志报警。
  • 关键监控指标:任务成功率、同步延迟、失败次数、系统资源占用等。
  • 提供接口或仪表盘展示监控结果。

四、典型流程(文字版)

  1. 数据源管理:管理员配置/维护源端和目标端的数据源信息。
  2. 取数管理:通过SQL或条件配置方式,定义每个任务的数据筛选和抽取逻辑。
  3. 调度管理:Doris数据准备完毕后,向Kafka发送“数据已就绪”消息。
  4. 任务管理:调度模块收到Kafka消息后,自动执行对应任务,同步数据到目标数据库。
  5. 消息管理:任务执行结果、异常等通过Kafka消息或其他方式推送至下游或管理端。
  6. 监控日志:全流程产生的日志实时收集、存储、检索、报警,便于运维监控和问题追溯。

五、技术选型建议

  • 数据库访问:JDBC/SQLAlchemy等
  • 消息队列:Kafka
  • 后端:Spring Boot
  • 日志与监控:ELK (Elasticsearch + Logstash + Kibana)
  • 任务调度/编排:可集成Airflow等高级调度器


六、后续可扩展方向

  • 支持更多类型的数据源适配(如Oracle、SQLServer等)
  • 数据治理与血缘分析
  • 图形化任务编排与监控