Solo DSP数据集成模块的架构设计
数据集成模块 - 架构设计文档 | Solo DSP
文档编号:DSP-ARCH-DI-001
版本号:v1.0.0
发布日期:2026-05-27
架构师:DSP架构团队
密级:内部公开
状态:✅ 已发布 | 最后更新: 2026-05-27
文档摘要
本文档详细阐述了DSP数据集成模块的架构设计,涵盖系统分层架构、核心组件设计、业务流程编排、双引擎(DataX/Kettle)集成方案、调度系统设计、监控告警机制及API接口规范。本模块采用企业级架构设计理念,支持向导式零代码配置与专业级Kettle深度集成双轨能力,满足从简单数据同步到复杂ETL转换的全场景数据集成需求。
>核心亮点:分层架构设计 | 双引擎支持 | 零代码配置 | 可视化编排
1. 架构概览
| 指标 | 数值 |
|---|---|
| 任务创建模式 | 2 种 |
| 执行引擎 | 2 个 |
| 数据源支持 | 50+ |
| 可视化配置 | 100% |
DSP数据集成模块采用分层架构设计,提供向导式零代码配置与企业级Kettle深度集成双轨能力,支持从简单数据同步到复杂ETL转换的全场景数据集成需求。
>核心设计理念:
> -双引擎架构:DataX负责高性能数据同步,Kettle负责复杂数据转换,各取所长
> -双模式创建:平台创建(支持元数据自动触发)、外部导入两种任务创建模式,覆盖全场景
> -零代码配置:向导式界面,业务人员无需编程即可完成复杂ETL配置
> -企业级集成:完整的Kettle资源库管理、可视化编辑、远程执行能力
2. 系统架构设计
2.1 总体架构设计
>架构图说明:下图展示了数据集成模块的完整技术架构,包含数据源层、引擎层、管理层和目标层的全景视图,以及各层之间的数据流转关系。
架构层次说明:
| 层次 | 名称 | 核心功能 | 技术组件 |
|---|---|---|---|
| 数据源层 | 多源异构数据接入 | 支持20+种数据源 | MySQL / Oracle / PostgreSQL / Hive / ClickHouse / MongoDB / Redis / Kafka / 文件系统 / Elasticsearch / API |
| 数据集成引擎层 | 数据同步与转换 | DataX引擎 + Kettle集成 | Reader/Writer插件、通道控制、资源库管理、任务导入、变量管理、可视化编辑器 |
| 任务管理与调度 | 任务生命周期管理 | 配置、映射、策略、调度、监控、告警 | Quartz + DAG引擎 |
| 元数据采集 | 数据血缘追踪 | 自动采集、历史记录、血缘关系 | 与元数据管理模块深度集成 |
| 数据质量检查 | 数据质量保障 | 前置校验、清洗规则、质量报告 | 完整性/一致性校验 |
| 目标数据层 | 数据存储与消费 | 数据仓库、数据湖、实时数仓、OLAP、消息队列、对象存储、搜索引擎、API服务层 |
>架构设计说明:
> -数据源层:支持20+种异构数据源,包括关系型数据库、NoSQL、大数据存储、消息队列和文件系统
> -数据集成引擎层:采用双引擎架构,DataX负责向导式ETL任务,Kettle负责复杂转换和外部任务集成
> -任务管理与调度:提供完整的任务生命周期管理,包括配置、映射、策略、调度、监控和告警
> -元数据采集:与元数据管理模块深度集成,自动采集数据血缘和变更历史(紫色连线表示元数据同步)
> -数据质量:集成数据质量检查能力,支持前置校验和清洗规则
> -目标数据层:支持多种数据目标,实现数据仓库、数据湖、实时数仓的统一集成
2.2 核心组件清单
| 组件名称 | 所属层级 | 功能描述 | 技术实现 |
|---|---|---|---|
| 任务管理服务 | 服务层 | 负责任务的创建、查询、更新、删除等生命周期管理 | Spring Boot + MyBatis |
| 调度编排服务 | 服务层 | 处理任务的定时调度、依赖触发、事件触发等调度逻辑 | Quartz + DAG引擎 |
| 资源库服务 | 服务层 | 管理Kettle资源库连接、任务导入导出、版本控制 | Kettle Java API |
| 监控告警服务 | 服务层 | 任务执行监控、日志收集、异常告警、数据质量检查 | Prometheus + AlertManager |
| 元数据服务 | 服务层 | 数据源元数据采集、数据血缘追踪、影响分析 | Apache Atlas API |
| DataX引擎 | 引擎层 | 高性能数据同步引擎,支持批量数据读写 | Alibaba DataX |
| Kettle引擎 | 引擎层 | 复杂数据转换引擎,支持ETL流程编排 | Pentaho Kettle |
| SQL引擎 | 引擎层 | 支持SQL数据转换、存储过程调用 | Calcite + 原生JDBC |
3. 业务流程设计
数据集成模块提供两种主要的任务创建模式:平台创建任务、外部任务导入。其中平台创建模式支持通过元数据采集自动触发任务创建。
3.1 业务流程总览
业务流程说明:
- 新建任务:用户进入数据集成模块,选择创建新任务
- 任务类型选择:支持两种模式:平台创建(向导式)和外部任务导入(Kettle资源库)
- 平台创建流程:选择源数据源/表 → 选择目标数据源/表 → 选择同步模式 → 配置映射 → 设置并发 → 保存任务
- 外部任务流程:创建资源库 → 设置变量 → 配置调度任务
- 同步模式判断:全量同步(直接映射字段)或增量同步(设置增量字段+初始值)
- 任务调度:支持定时调度、手动触发、依赖任务触发三种执行方式
- 执行结果:记录执行日志,成功或失败都会更新元数据采集历史
3.2 任务创建入口 - 统一门户
| 模式 | 说明 | 面向用户 |
|---|---|---|
| 平台创建(向导模式) | 向导式配置 · 零代码ETL | 业务人员 |
| 外部导入(专业模式) | Kettle资源库 · 专业ETL | 技术人员 |
>子流程:平台创建支持元数据采集自动触发(Metadata Driven Pipeline)
3.3 平台创建流程 - 五步向导式配置
| 步骤 | 名称 | 关键操作 |
|---|---|---|
| 1 | 📡 选择数据源 | 源数据源/表选择、连接测试验证、数据预览确认 |
| 2 | 🎯 选择目标 | 目标数据源/表选择、自动创建表结构、前置清理策略 |
| 3 | ⚡ 同步模式 | 全量/增量选择、增量字段配置、初始值设定 |
| 4 | 🔗 字段映射 | 自动字段匹配、自定义转换规则、数据类型映射 |
| 5 | ⚙️ 高级配置 | 并发通道数(1-32)、批量大小(100-10000)、容错率(0-100%)、速率限制 |
全量同步模式:
- 清空目标表或创建新表(可配置保留/清空策略)
- 批量读取源数据(默认1000条/批,可调)
- 应用字段映射和转换规则(支持函数转换)
- 批量写入目标表(支持事务控制)
增量同步模式:
- 读取上次同步位置(checkpoint持久化机制)
- 按增量字段筛选变更数据(支持多字段)
- 支持时间戳/自增ID/CDC多种增量识别模式
- 支持增量数据合并策略(追加/更新/合并)
高级配置选项:
- 并发通道数:1-32通道并行(根据数据源调整)
- 批量大小:100-10000条/批(影响性能与内存)
- 容错率:0-100%错误容忍(脏数据处理策略)
- 速率限制:支持QPS/TPS限速保护数据源
任务保存与调度配置:
- ✓ 保存任务到仓库(支持版本管理)
- ✓ 配置调度策略(Cron表达式/固定间隔/依赖触发)
- ✓ 设置告警规则(邮件/企业微信/短信/Webhook)
- ✓ 配置重试策略(失败重试次数/间隔)
- ✓ 设置超时控制(任务执行超时时间)
- ✓ 数据质量检查(完整性/一致性校验)
- ✓ 并发控制(通道数/批量大小配置)
- ✓ 容错处理(错误记录/跳过策略)
- ✓ 发布上线(一键发布/灰度发布)
3.4 Kettle外部导入 - 企业级ETL集成
| 步骤 | 名称 | 关键操作 |
|---|---|---|
| 1 | 🏦 资源库连接 | 数据库/文件资源库、安全认证配置 |
| 2 | 📂 浏览与导入 | 树形目录浏览、选择ktr/kjb文件 |
| 3 | 🔧 变量配置 | 环境变量设置、参数动态替换 |
| 4 | ✏️ 可视化编辑 | 在线编辑任务、实时预览数据 |
| 5 | ▶️ 执行 | Carte远程、集群部署 |
支持的资源库类型:
- 数据库资源库:MySQL/Oracle/SQLServer/PostgreSQL
- 文件资源库:本地文件系统/网络共享/S3对象存储
- Pentaho Server:企业级资源库,支持版本控制与权限
核心功能特性:
- 任务导入:自动解析ktr/kjb,提取数据源与转换逻辑
- 变量管理:支持命名参数、环境变量、运行时参数
- 版本控制:记录修改历史,支持版本对比与回滚
执行模式:
- 本地执行:直接在DSP服务器上运行Kettle任务
- Carte远程:通过Carte服务分布式执行,支持负载均衡
- 集群模式:Master-Slave架构,支持任务分片并行
3.5 任务调度与执行监控 - 全生命周期管理
| 阶段 | 组件 | 说明 |
|---|---|---|
| 调度触发方式 | 定时调度 / 手动触发 / 依赖触发 | Cron表达式 / 固定间隔 / 前置任务完成 |
| 任务调度器 | Quartz调度引擎 | DAG依赖解析、分布式调度协调 |
| 任务执行引擎 | DataX引擎 / Kettle引擎 | 并发控制、资源隔离、熔断保护 |
| 执行结果处理 | 成功 / 失败 | 日志记录、告警通知、重试机制 |
| 监控告警中心 | 邮件 / 企业微信 / 短信 / Webhook | 多级告警策略 |
| 日志记录与数据血缘 | 执行日志 / 数据血缘 / 影响分析 | 全链路记录、追踪、溯源 |
4. Kettle 深度集成设计
>企业级Kettle集成能力矩阵
| 能力 | 说明 |
|---|---|
| 🗂️ 资源库管理 | 支持文件库/数据库库连接,浏览目录结构,版本控制 |
| 📤 任务导入 | 从资源库导入ktr/kjb文件,自动解析转换,提取配置 |
| 📝 可视化编辑 | 在线编辑Kettle任务,实时预览数据流,步骤调试 |
| ▶️ 远程执行 | 通过Carte服务远程执行,支持集群部署,负载均衡 |
4.1 资源库管理系统
资源库管理是Kettle集成的核心能力,支持连接外部Kettle资源库,实现任务的集中管理和版本控制。
| 功能 | 说明 |
|---|---|
| 多资源库支持 | 支持数据库资源库、文件资源库、企业级资源库(Pentaho Server)等多种类型 |
| 安全连接 | 支持用户名/密码认证、SSL加密连接、连接池管理,保障资源库访问安全 |
| 目录浏览 | 树形结构展示资源库中的任务和转换,支持文件夹创建、重命名、移动 |
| 任务导入 | 一键导入资源库中的Kettle任务(kjb)和转换(ktr),自动解析依赖关系 |
| 双向同步 | 支持从资源库导入到DSP,也支持将DSP编辑的任务导出到资源库 |
| 版本管理 | 记录任务修改历史,支持版本对比、回滚到指定版本 |
资源库连接配置:
| 配置项 | 说明 | 示例值 |
|---|---|---|
| 资源库名称 | 资源库在DSP中的显示名称 | 生产环境Kettle库 |
| 资源库类型 | 数据库资源库 / 文件资源库 / Pentaho Server | 数据库资源库 |
| 数据库连接 | 资源库所在数据库的连接信息 | MySQL:3306/kettle_repo |
| 认证方式 | 资源库访问认证配置 | 用户名/密码 |
| 描述 | 资源库用途说明 | 生产环境ETL任务集中管理 |
4.2 可视化任务编辑器
DSP提供基于Web的Kettle任务可视化编辑器,无需安装Kettle客户端即可在线编辑任务。
画布编辑:
- 拖拽式组件添加(输入、输出、转换、脚本等)
- 组件连线配置数据流
- 支持多选、复制、粘贴、撤销/重做
- 画布缩放、网格对齐、自动布局
属性配置:
- 组件属性面板动态渲染
- 数据库连接选择器
- 字段映射可视化配置
- 变量和参数管理
智能辅助:
- 组件搜索和快速添加
- 自动完成和语法高亮
- 配置验证和错误提示
- 模板库和最佳实践推荐
预览调试:
- 单步执行和断点调试
- 数据预览和抽样检查
- 执行日志实时查看
- 性能分析和优化建议
4.3 远程执行与集群部署
支持通过Carte服务进行远程任务执行,实现分布式ETL处理和负载均衡。
Carte服务架构:
- Master节点:任务分发与调度
- Slave节点:任务执行引擎
- 负载均衡:智能任务分发
- 故障转移:自动切换备用节点
安全与监控:
- HTTPS加密通信
- 访问令牌认证
- 执行日志集中收集
- 资源使用监控告警
5. DataX 引擎设计
DataX是阿里巴巴开源的异构数据源离线同步工具,DSP集成DataX作为高性能数据同步引擎。
5.1 核心架构
架构组件:
- Reader 读取:MySQL Reader / Oracle Reader / HDFS Reader / …
- Framework 核心:通道(Channel)- 数据缓冲 / 调度器(Scheduler)- 并发控制
- Writer 写入:MySQL Writer / Oracle Writer / HDFS Writer / …
5.2 性能优化策略
| 优化维度 | 策略 |
|---|---|
| 并发控制 | 支持多通道并行读写、通道数可配置(1-32)、自动负载均衡、背压机制防止OOM |
| 批量处理 | 批量读取提升IO效率、批量写入减少网络往返、批量大小可配置、支持事务批量提交 |
6. 调度系统设计
6.1 调度触发方式
| 触发方式 | 说明 | 适用场景 | 配置示例 |
|---|---|---|---|
| Cron表达式 | 基于Unix Cron的定时调度 | 周期性数据同步 | 0 0 2 * * ?(每天凌晨2点) |
| 固定间隔 | 按指定时间间隔触发 | 准实时数据同步 | 每5分钟执行一次 |
| 依赖触发 | 前置任务完成后触发 | 工作流编排 | 任务A完成后执行任务B |
| 事件触发 | 监听特定事件触发 | 事件驱动场景 | 文件到达触发 |
| 手动触发 | 用户手动执行 | 临时数据同步 | 点击执行按钮 |
6.2 DAG依赖编排
支持复杂的工作流编排,通过DAG(有向无环图)定义任务之间的依赖关系。
| 编排特性 | 说明 |
|---|---|
| 串行执行 | 任务按依赖顺序依次执行,前一个任务成功后才执行下一个 |
| 并行执行 | 无依赖关系的任务并行执行,提升整体执行效率 |
| 分支合并 | 支持条件分支和结果合并,实现复杂业务逻辑 |
7. 监控告警设计
7.1 监控指标体系
| 指标类型 | 具体指标 |
|---|---|
| 性能指标 | 读取/写入速率(条/秒)、吞吐量(MB/秒)、延迟时间、资源使用率 |
| 质量指标 | 数据完整性、数据一致性、错误记录数、脏数据比例 |
| 时效指标 | 任务执行时长、调度延迟、超时告警、SLA达成率 |
7.2 告警规则配置
| 告警类型 | 触发条件 | 告警级别 | 通知方式 |
|---|---|---|---|
| 任务失败 | 任务执行返回非零状态 | 🔴 紧急 | 邮件+短信+企业微信 |
| 执行超时 | 执行时间超过阈值 | 🟡 警告 | 邮件+企业微信 |
| 数据异常 | 错误率超过阈值 | 🟡 警告 | 邮件+企业微信 |
| 性能下降 | 吞吐量低于基线 | 🔵 提示 | 邮件 |
8. API接口设计
8.1 任务管理API
| 方法 | 路径 | 说明 |
|---|---|---|
POST | /api/integration/tasks | 创建数据集成任务 |
GET | /api/integration/tasks/{taskId} | 获取任务详情 |
PUT | /api/integration/tasks/{taskId} | 更新任务配置 |
DELETE | /api/integration/tasks/{taskId} | 删除任务 |
POST | /api/integration/tasks/{taskId}/execute | 手动执行任务 |
8.2 资源库管理API
| 方法 | 路径 | 说明 |
|---|---|---|
POST | /api/integration/repositories | 创建Kettle资源库连接 |
GET | /api/integration/repositories/{repoId}/browse | 浏览资源库目录 |
POST | /api/integration/repositories/{repoId}/import | 从资源库导入任务 |
8.3 监控查询API
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/integration/tasks/{taskId}/logs | 获取任务执行日志 |
GET | /api/integration/tasks/{taskId}/metrics | 获取任务执行指标 |
GET | /api/integration/dashboard | 获取监控大盘数据 |
> © 2025 Solo DSP - 数据集成模块架构设计文档
