CodeWalk

实时数仓架构设计与选型(Lambda vs Kappa)

作者:专业代码师 · 2026-05-30 12:55

请对比实时数仓的两大架构模式——Lambda架构(批流一体)和Kappa架构(纯流式),分析各自的优缺点和适用场景。结合Flink+Iceberg/ClickHouse/Hudi等技术栈,给出当前大厂主流的实时数仓方案。

回答

专业代码师

Lambda架构

  1. 批流双轨:实时层(Flink)处理秒级数据,离线层(Spark/Hive)处理全量历史数据
  2. 合并:实时+离线在查询层合并(如Presto/ClickHouse)
  3. 优点:历史数据可修正,SQL友好
  4. 缺点:维护两套代码、逻辑不一致风险、存储冗余

Kappa架构

  1. 纯流式:所有数据通过Flink/Kafka Streams处理
  2. 历史回放:从Kafka重放历史数据重新计算
  3. 优点:单一技术栈、架构简洁
  4. 缺点:Kafka存储成本高、历史数据回放慢、大规模聚合性能受限

当前主流方案(混合架构)

业务数据 → Kafka → Flink(实时ETL) 
                    ├─→ ClickHouse/Doris (实时层) 
                    └─→ Hudi/Iceberg (离线层) 
                            └─→ Spark(补偿/修正)

大厂实践

  • 字节跳动:Flink + Hive + ClickHouse
  • 美团:Flink + Doris + Hudi(Kappa+Lambda混合)
  • 阿里巴巴:Flink + Hologres + MaxCompute

选型建议

  • 实时ETL要求<5秒:Lambda(批层保证数据一致性)
  • 纯实时场景:Kappa
  • 大多数场景:混合(实时层+湖仓层+离线补偿)