数帆核心架构
整体架构
┌─────────────────────────────────────────────────────────────┐
│ 数据源层 │
│ MySQL Oracle PostgreSQL MongoDB Kafka 文件 API 等 │
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────┐
│ 数据集成层 │
│ 离线同步(DataX) 实时同步(Flink CDC) 消息队列(Kafka) │
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────┐
│ 数据存储层 │
│ 数据湖(HDFS/OSS) 数仓(Hive) 实时存储(ClickHouse) │
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────┐
│ 数据计算层 │
│ 离线计算(Spark/Hive) 实时计算(Flink) 即席查询(Presto)│
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────┐
│ 数据服务层 │
│ API 服务 数据集市 BI 报表 NL2SQL(AI 查询) │
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────┐
│ 数据治理层(横向贯穿) │
│ 元数据管理 数据血缘 数据质量 数据安全 数据目录 │
└─────────────────────────────────────────────────────────────┘数据集成
离线同步(批量 ETL)
基于 DataX 二次开发,支持 50+ 数据源:
数据同步配置示例(MySQL → Hive)
{
"job": {
"reader": {
"name": "mysqlreader",
"parameter": {
"jdbcUrl": "jdbc:mysql://host:3306/db",
"table": ["orders"],
"column": ["id", "user_id", "amount", "created_at"],
"where": "created_at >= '${yesterday}'"
}
},
"writer": {
"name": "hivewriter",
"parameter": {
"database": "dw",
"table": "ods_orders",
"partition": "dt=${yesterday}"
}
}
}
}实时同步(CDC)
基于 Flink CDC,实现数据库变更实时同步:
MySQL Binlog → Flink CDC → Kafka → 目标系统
├── ClickHouse(实时分析)
├── Elasticsearch(搜索)
└── 数据湖(归档)延迟:< 1 秒(正常网络条件下)
数据开发
分层架构(数仓分层)
数仓分层规范
├── ODS(原始数据层)
│ └── 贴源存储,不做业务加工
├── DWD(明细数据层)
│ └── 数据清洗、标准化、维度关联
├── DWS(汇总数据层)
│ └── 按主题聚合,如用户行为汇总
├── ADS(应用数据层)
│ └── 面向具体业务的指标数据
└── DIM(维度层)
└── 公共维度表(用户、商品、时间)任务调度
DAG 任务依赖示例
ods_orders(每天 01:00 同步)
↓
dwd_orders_clean(清洗,依赖 ods_orders)
↓
dws_user_order_summary(汇总,依赖 dwd)
↓
ads_daily_report(报表,依赖 dws)
↓
邮件推送报表(依赖 ads)调度能力:
- 支持 Cron 表达式
- 支持任务依赖(上游完成才触发下游)
- 失败自动重试(可配置重试次数)
- 告警通知(钉钉、邮件、短信)
数据治理
数据血缘
数据血缘记录数据的来源和流向,是数据治理的核心能力:
血缘示例
MySQL.orders
↓(ETL)
Hive.ods_orders
↓(SQL 加工)
Hive.dwd_orders_clean
↓(聚合)
Hive.dws_user_order_summary
↓(API)
BI 报表「用户消费分析」血缘的价值:
- 影响分析:修改上游表前,知道会影响哪些下游
- 问题排查:报表数据异常,快速定位根因
- 合规审计:数据从哪来、到哪去,全程可追溯
数据质量
数据质量规则类型
├── 完整性:字段不为空率 > 99%
├── 唯一性:主键无重复
├── 一致性:跨表数据一致(如订单金额与支付金额)
├── 及时性:数据更新延迟 < 2 小时
└── 准确性:数值在合理范围内(如年龄 0-150)
质量监控
├── 规则配置(可视化)
├── 定时检测(随任务执行)
├── 异常告警(超阈值通知)
└── 质量报告(趋势分析)