一个大数据系统架构的设计思想很大程度上受到当时技术条件和思维模式的限制。Lambda架构将批处理层和速度层分为两层,分别进行离线数据处理和实时数据处理,这样设计的根本原因在于,Lambda提出的初期是在公司中进行小范围的业务运用,当时并没有思考有没有一个计算引擎能够在可接受的延迟条件下既进行离线数据处理又进行实时数据处理。在这样的前提下,将现有的成熟离线处理技术(Hadoop)和实时处理技术(Storm)相结合,用View模型将二者处理数据后得到的输出结果结合起来,在服务层(Serving Layer)中进行统一,开放给上层服务,是相当可行且高效的设计方式。
Kappa架构作者对流处理系统有丰富的理论知识和使用经验,是Apache Kafka和Apache Samza等知名开源处理系统的作者之一。基于对流式计算深入的理解,Kappa架构在同一层次内进行实时处理和离线处理,在满足延迟要求的流式计算技术成熟的前提,比Lambda更优秀。表1从多个维度对Lambda架构和Kappa架构进行了对比分析。
对比内容 | Lambda架构 | Kappa架构 |
---|---|---|
复杂度与开发、维护成本 | 需要维护两套系统(引擎),复杂度高,开发、维护成本高 | 只需要维护一套系统(引擎),复杂度低,开发、维护成本低 |
计算开销 | 需要一直运行批处理和实时计算,计算开销大 | 必要时进行全量计算,计算开销相对较小 |
实时性 | 满足实时性 | 满足实时性 |
历史数据处理能力 | 批式全量处理,吞吐量大,历史数据处理能力强 | 流式全量处理,吞吐量相对较低,历史数据处理能力相对较弱 |