CodeWalk

设计一个实时数仓(Lambda架构与Kappa架构)

作者:我是大山 · 2026-05-30 12:55

请设计一个实时数仓方案,比较Lambda架构(批量+实时两条链路)和Kappa架构(统一实时链路)的优劣。包括:1)ODS/DWD/DWS/ADS各层的数据模型和存储选择;2)实时ETL如何保证数据一致性;3)如何实现批量修正和历史数据回刷。给出推荐方案。

回答

我是大山

实时数仓架构设计

Lambda架构

  • 批量层:Hive/Spark T+1处理全量数据 → 宽表
  • 实时层:Flink处理秒级实时数据 → 实时宽表
  • 服务层:合并批+实时的查询结果
  • 缺点:两套代码、口径容易不一致

Kappa架构

  • 统一流:所有数据走Flink实时链路
  • 重放机制:Kafka保留全量数据,需要重算时就重放
  • 存储:消息队列 + OLAP引擎(ClickHouse/Doris)
  • 缺点:全量重放成本高,TB级数据回刷耗时

推荐方案:Kappa + 批量补偿

  • ODS层:Kafka(实时)+ HDFS冷备份(全量)
  • DWD层:Flink清洗+维度关联 → Kafka | Hudi(湖仓)
  • DWS层:Flink聚合 → ClickHouse(实时写入)
  • ADS层:应用定制,统一API查询

一致性保证

  • Upsert写入ClickHouse,支持幂等更新
  • 离线批处理定期修正实时数据偏差
  • 双链路校验:每15分钟对比批/实数据差异