2. 数据平台架构与核心组件

数据平台不是单一系统,而是由采集、存储、计算、调度、元数据、权限、服务门户等多层组件协同构成的工程体系。理解分层架构的意义在于:每一层都有清晰的职责边界与对外契约,上层只依赖下层暴露的接口,从而让平台在数据量、任务数、用户数增长时仍能局部替换、独立扩展。本节围绕典型分层架构、存储与计算引擎选型、元数据与权限体系、自助服务门户的架构定位四条主线展开,帮助读者建立“组件放在哪一层、为什么放在这一层、选型时看什么参数”的判断能力。

典型数据平台分层架构

一个可落地的数据平台通常划分为五层:数据源层、采集接入层、存储计算层、数据服务层、应用与自助服务层。纵向贯穿的是元数据与权限、调度编排、监控告警三条支撑体系。数据源层包含业务库(MySQL、PostgreSQL)、日志、埋点、第三方 API 与文件;采集接入层负责批量抽取(如 Sqoop、DataX、Flink CDC)与实时接入(Kafka、Pulsar);存储计算层是平台的核心,承担原始数据落地、明细加工与聚合;数据服务层通过查询网关、指标服务、API 网关对外提供统一访问入口;应用与自助服务层面向分析师、运营与业务人员,提供 SQL 查询、报表、看板与自助取数。

分层的关键约束是“不跨层直连”。例如自助门户不应直接连业务库,而应通过数据服务层访问已治理的数据集。这样做的收益是:权限收敛在服务层统一校验,血缘与口径在元数据中统一登记,性能压力被网关的缓存与限流吸收。下面这张架构图展示了各层组件及其纵向支撑关系。

纵向支撑体系 元数据与血缘 表/字段/任务登记 权限与审计 RBAC + 行/列级 调度编排 DAG/依赖/重跑 监控告警 SLA/延迟/质量 成本与资源 配额/计费/弹性 应用与自助服务层 SQL 查询台 · 报表看板 · 自助取数 · 指标目录 · 数据 API 消费方 数据服务层 查询网关 · 指标服务 · 统一 SQL 入口 · 缓存/限流 · 数据 API 存储与计算层 对象存储/湖仓 · 数仓分层 · 批/流计算引擎 · 查询引擎 · 缓存 采集接入层 批量抽取 · CDC 实时同步 · 消息队列 · 文件/API 接入 · 数据校验 数据源层 业务库 MySQL/PG · 日志与埋点 · 第三方 API · 文件与对象存储 数据自下而上流动,控制与治理自上而下贯穿;跨层直连是架构腐化的起点

数据存储与计算引擎选型

选型的核心不是“哪个引擎最强”,而是“负载特征与引擎能力是否匹配”。可以从四个维度建立判断框架:数据规模与增长、查询延迟要求、写入模式(批量覆盖还是高频增量)、以及并发用户数。下表给出常见组合的适用场景,参数为示例性参考值,实际需以压测为准。

组件类型代表技术适用负载关键观察指标
湖仓存储Iceberg / Hudi / Delta Lake海量明细、增量更新、多引擎共享小文件数量、快照过期、元数据膨胀
MPP 数仓ClickHouse / Doris / StarRocks高并发聚合、亚秒级看板P95 查询延迟、并发 QPS、Compaction 积压
批处理引擎Spark / Flink BatchT+1 全量加工、复杂 ETLShuffle 量、任务时长、资源利用率
流处理引擎Flink / Kafka Streams秒级增量、实时指标端到端延迟、反压、Checkpoint 时长
查询网关Trino / Presto跨源联邦查询、探索式分析扫描数据量、队列等待、内存溢出率

一个常见的实践组合是:Iceberg 作为湖仓底座承载明细与增量,Doris 承载面向看板的高并发聚合,Spark 负责 T+1 加工,Flink 负责实时链路,Trino 作为探索查询入口。选型落地时建议先做小规模压测:用真实数据分布构造 10 亿行级明细表,分别测试点查、范围聚合、多表 Join 三类查询,记录 P50/P95 延迟与资源消耗,再决定是否引入该组件。

元数据与权限体系

元数据是平台的“地图”,没有它,数据资产就无法被发现、被信任、被复用。元数据通常分为三类:技术元数据(表结构、分区、存储位置、任务依赖)、业务元数据(指标口径、负责人、业务域、标签)、操作元数据(访问日志、任务运行记录、变更历史)。三者结合才能支撑血缘分析、影响评估与成本归因。

权限体系建议采用“认证—授权—审计”三段式。认证对接企业统一身份(LDAP/OAuth);授权采用 RBAC 为主、ABAC 为辅:角色绑定数据域,数据域绑定库表与列,敏感字段额外叠加行级过滤与列级脱敏;审计记录每一次查询的用户、SQL、扫描行数与返回行数,用于异常检测与合规追溯。权限校验应尽量下沉到数据服务层,避免每个应用各自实现一套逻辑。

实践建议:为每张核心表登记“负责人 + 更新频率 + 口径说明 + 敏感级别”四个字段,这四项是自助服务能否被信任的最小元数据集合。

自助服务门户的架构定位

自助服务门户不是简单的“网页版 SQL 客户端”,它在架构中承担三个角色:统一入口、能力封装、治理前置。统一入口意味着用户只需登录一次,即可访问查询、报表、取数、API 申请等能力;能力封装意味着门户把底层引擎差异屏蔽掉,用户选择数据集而非选择引擎;治理前置意味着权限校验、敏感字段提示、查询成本预估、慢查询拦截都在提交前完成。

门户与后端的关系可以概括为:门户负责交互与编排,数据服务层负责执行与治理,存储计算层负责算力。门户不应直接持有数据库连接串,而应通过服务层的 API 获取结果。这样当底层引擎从 A 换成 B 时,门户几乎不需要改动。判断门户是否合格,可以看三个信号:用户能否在 3 分钟内找到目标数据集;查询提交前是否能看到预估扫描量;越权访问是否在服务层被拦截而非在门户前端被隐藏。

常见误区:把权限控制做在前端按钮隐藏上。前端隐藏只是体验优化,真正的安全边界必须在服务层与存储层校验,否则绕过门户直连引擎即可越权。

综合来看,分层架构解决“组件放哪里”,选型解决“用什么组件”,元数据与权限解决“数据能否被信任地使用”,自助门户解决“用户如何低门槛地使用”。四者共同构成数据平台从建设到运营的闭环,也是后续性能优化与生产实践的基础坐标系。