跳到主要内容

设计数据平台

需求

设计一个公司级数据平台,支持:

  • 每日新增 10 亿条事件数据
  • 支撑 50+ 分析师自助查询
  • T+1 离线报表 + 分钟级实时看板
  • 数据血缘和质量监控

架构设计

分层架构

层级组件说明
采集层Kafka + Debezium + 埋点 SDK统一数据入口
存储层Iceberg(湖) + ClickHouse(OLAP)冷热分层
计算层Spark(离线) + Flink(实时) + dbt(建模)批流一体
服务层Trino(联邦查询) + API Gateway统一查询接口
应用层Superset/Metabase + 自助查询面向分析师
治理层DataHub(元数据) + Great Expectations(质量)数据治理

元数据管理

元数据类型内容工具
技术元数据表结构、字段类型、分区方式DataHub / Apache Atlas
业务元数据指标定义、数据字典、负责人自建指标平台
运营元数据数据量、更新时间、查询频率Airflow + 自建监控
血缘元数据上下游依赖、影响分析dbt Lineage / DataHub

常见面试问题

Q1: 离线和实时数据如何统一?

答案

采用 Lambda 或 Kappa 架构:

  • Lambda:离线层(Spark + Hive)保证准确性,实时层(Flink + Kafka)保证时效性,服务层合并结果
  • Kappa:全部走实时流处理(Flink),通过回溯重放 Kafka 消息修正历史数据
  • 推荐方案:核心指标用 Lambda 保证准确性,非关键指标用 Kappa 简化架构

Q2: 如何支撑 50+ 分析师同时查询?

答案

  • 高频查询走 ClickHouse/Doris(预聚合物化视图)
  • Ad-hoc 查询走 Trino(联邦查询,直接查数据湖)
  • 设置查询配额和超时限制,防止大查询拖垮集群
  • 热门 Dashboard 做缓存,减少重复计算

相关链接