前面几篇我们分别介绍了数据平台、数据采集、ETL、数据仓库和数据湖。
如果把这些知识单独来看,可能还是会觉得有点零散。
MySQL 是干什么的?Kafka 为什么要放在中间?Flink 又负责什么?数据仓库和数据湖到底怎么连接起来?
这一篇我们不再单独讲某一个技术,而是把前面的内容全部串起来,看一遍完整的数据平台是怎么工作的。
一、先看一条完整的数据链路
一个比较典型的数据平台,可以抽象成:
业务系统
↓
数据采集
↓
消息队列
↓
数据处理
↓
数据湖 / 数据仓库
↓
数据分析
↓
BI / 报表 / 应用
如果把具体技术放进去,可能变成:
MySQL
↓
CDC
↓
Kafka
↓
Flink / Spark
↓
Iceberg / ClickHouse
↓
BI
当然,真实企业的数据平台可能比这个复杂很多,但核心思路基本都是围绕这条数据链路展开的。
二、第一步:业务系统产生数据
一切数据的源头,通常都是业务系统。
比如一个电商平台:
用户注册
用户登录
浏览商品
加入购物车
提交订单
支付订单
申请退款
这些操作都会产生数据。
例如用户下了一笔订单:
ini
order_id = 10001
user_id = 20001
amount = 299
created_at = 2026-09-26 10:30:00
这些数据最开始可能存储在 MySQL 中。
对于业务系统来说,MySQL 的主要任务是保证订单、支付、用户等业务正常运行。
但数据平台需要解决的是另外一个问题:
如何把这些业务数据拿出来进行统一分析?
三、第二步:数据进入数据平台
这时候就轮到数据采集系统出场了。
对于数据库数据,可以采用全量同步、增量同步或者 CDC。
例如 MySQL 中产生了一条新的订单:
sql
INSERT INTO orders
CDC 可以捕获这次变化,然后把变化数据发送到数据平台。
简单理解:
MySQL
↓
Binlog
↓
CDC
↓
订单变化事件
这样,业务数据库中的变化就可以被数据平台感知。
对于日志、API、CSV 等其他数据源,也可以通过不同的数据采集方式进入平台。
四、第三步:为什么经常要经过 Kafka?
数据采集之后,很多架构不会直接把数据送给某一个处理程序,而是先进入 Kafka。
原因之一是解耦。
假设订单数据后面有三个系统都需要:
订单数据
↓
实时统计
↓
数据仓库
↓
用户画像
如果 CDC 直接连接三个系统,整个架构会变得比较复杂。
有了 Kafka:
markdown
┌→ 实时计算
│
MySQL → CDC → Kafka → 数据仓库
│
└→ 用户画像
Kafka 就像一个数据中转站。
生产者负责把数据放进去,多个消费者可以按照自己的需求读取。
这也是为什么 Kafka 在很多数据平台架构中非常常见。
五、第四步:数据进入处理环节
数据进入 Kafka 之后,并不意味着可以直接拿来分析。
原始数据可能存在很多问题:
字段为空
数据重复
格式不统一
异常数据
字段缺失
不同系统 ID 不一致
所以需要进行数据处理。
这就是前面讲过的 ETL / ELT。
例如:
原始订单
↓
过滤异常订单
↓
数据去重
↓
字段转换
↓
关联用户信息
↓
数据聚合
如果需要实时处理,可以使用 Flink。
如果是大规模离线计算,也可能使用 Spark 等技术。
所以这里不要简单理解成:
Flink = 数据平台。
实际上 Flink 只是数据平台中的一个数据处理组件。
六、第五步:数据最终存在哪里?
数据处理完成之后,就需要保存下来。
这里就会出现我们上一篇介绍的数据仓库和数据湖。
一种常见思路是:
原始数据
↓
数据湖
↓
数据处理
↓
数据仓库
数据湖可以保存更加原始、完整的数据。
数据仓库则保存经过整理、适合分析的数据。
例如:
bash
数据湖
2026-09-26/orders.json
2026-09-26/users.json
2026-09-26/logs.json
经过处理后:
数据仓库
fact_order
dim_user
dim_product
dim_date
这样就可以针对分析场景建立更加稳定的数据模型。
七、第六步:数据最终被谁使用?
数据平台建设的最终目的,并不是"把数据存起来"。
而是让数据真正产生价值。
最常见的使用方式就是 BI。
例如业务人员想知道:
今天销售额是多少?
哪个城市销售额最高?
哪个商品卖得最好?
用户复购率是多少?
BI 工具可以从数据仓库读取数据,然后生成:
销售报表
经营看板
趋势图
排行榜
数据大屏
最终形成:
数据
↓
信息
↓
分析
↓
决策
这也是数据平台存在的重要意义。
八、实时数据和离线数据可以同时存在
现实中的数据平台通常不会只有一种数据处理方式。
比如老板打开销售大屏,希望看到最近几秒的销售数据。
这时候需要实时链路:
MySQL
↓
CDC
↓
Kafka
↓
Flink
↓
实时计算
↓
实时数据
但每天晚上又需要生成完整的销售日报:
sql
业务数据
↓
数据仓库
↓
Spark / SQL
↓
离线统计
↓
日报
所以一个数据平台可能同时存在:
实时链路
离线链路
两条链路解决不同的问题。
实时链路关注延迟。
离线链路更加关注数据完整性和大规模计算效率。
九、数据平台还需要任务调度
到这里可能会产生一个问题:
这么多任务到底是谁负责执行?
例如:
每天 01:00
↓
同步订单数据
每天 02:00
↓
清洗订单数据
每天 03:00
↓
生成销售汇总
每天 04:00
↓
更新 BI 数据
如果全部手动执行,基本不现实。
所以数据平台还需要任务调度系统。
例如 Airflow 就是一类常见的数据工作流调度工具。
可以把任务组织成:
数据同步
↓
数据清洗
↓
数据转换
↓
数据聚合
↓
数据仓库
↓
BI
如果上游任务失败,下游任务可以等待或者停止执行。
这样整个数据处理流程就可以自动运行。
十、生产环境还要解决很多问题
前面介绍的是理想状态。
真正的数据平台上线之后,还需要面对很多工程问题。
例如:
数据丢失怎么办?
需要考虑消息持久化、Offset、重试以及故障恢复。
数据重复怎么办?
需要考虑幂等处理和去重。
任务失败怎么办?
需要支持自动重试和失败告警。
数据质量有问题怎么办?
需要建立数据质量检查。
数据越来越多怎么办?
需要考虑分区、索引、冷热数据、存储成本以及计算性能。
某个任务运行特别慢怎么办?
需要进行 SQL 优化、计算任务优化以及资源调整。
所以真正的数据平台开发,不只是把几个组件连接起来,而是一项完整的工程工作。
十一、一个完整的数据平台架构
现在可以把整个系列的内容放到一起:
markdown
┌──────────────→ 实时计算 → 实时分析
│
业务系统 → 数据采集 → Kafka
│
↓
ETL / ELT
↓
数据湖 / 数据仓库
↓
数据分析 / BI
↓
报表 / 大屏 / 应用
再加上调度、监控和治理:
markdown
数据平台
│
┌───────────────┼───────────────┐
↓ ↓ ↓
数据采集 数据处理 数据存储
↓ ↓ ↓
Kafka Flink/Spark Lake/Warehouse
└───────────────┼───────────────┘
↓
数据分析
↓
BI
调度 / 监控 / 数据质量 / 数据治理
这基本就是一个数据平台的整体轮廓。
当然,大型企业的数据平台还会加入权限管理、元数据管理、数据血缘、数据资产、成本管理等大量能力。
十二、数据平台开发到底是在开发什么?
理解完整链路之后,再回头看"数据平台开发"这个岗位,就会清晰很多。
它并不是单纯开发一个网站,也不是单纯写 SQL。
通常会涉及:
数据采集
数据同步
ETL / ELT
实时计算
离线计算
数据仓库
数据湖
任务调度
数据质量
数据治理
数据服务
不同公司的岗位侧重点可能完全不同。
有的更偏数据开发,有的更偏实时计算,有的更偏数据仓库,有的更偏平台工程。
但底层思路都是:
让数据能够稳定地从数据源流动到最终使用场景。
十三、这一系列真正应该掌握的是什么?
如果你刚开始学习数据平台,不需要一上来就把 Kafka、Flink、Spark、Hive、Iceberg、Airflow 全部学一遍。
更重要的是先建立一张完整的地图:
markdown
数据从哪里来?
↓
怎么进入平台?
↓
怎么处理?
↓
存在哪里?
↓
怎么分析?
↓
怎么保证整个流程稳定运行?
当这张地图建立起来之后,再学习具体技术,就知道它们分别解决什么问题。
比如:
Kafka
→ 解决数据传输和解耦
Flink
→ 解决实时数据处理
Spark
→ 解决大规模数据计算
Iceberg
→ 解决数据湖表管理
ClickHouse
→ 解决高性能分析查询
Airflow
→ 解决任务调度
技术会不断变化,但数据流转的基本逻辑不会轻易改变。
总结
一个完整的数据平台,本质上就是围绕数据建立的一条完整链路:
数据产生 → 数据采集 → 数据传输 → 数据处理 → 数据存储 → 数据分析 → 数据应用。
Kafka、Flink、Spark、数据仓库、数据湖、BI 等技术,都是这条链路上的不同组件。
真正理解数据平台,不是记住几十个技术名词,而是能够回答一个问题:
一条数据从业务系统产生,到最终出现在报表上,中间到底发生了什么?
当你能够把这条链路讲清楚,数据平台的基础也就真正入门了。