【老贝伏枥】Lambda架构 vs Kappa架构

浏览: 3565

1.Lambda 架构

   Lambda 设计目的在于提供一个能满足大数据系统关键特性的架构,包括高容错、低延迟、可扩展等。其整合离线计算与实时计算,融合不可变性、读写分离和复杂性隔离等原则,可集成Hadoop, Kafka, Spark,Storm等各类大数据组件。

   架构可分解为三层Layer,即Batch Layer, Real-Time(Speed) Layer和Serving Layer。

  • Batch Layer : 存储数据集,在数据集上预先计算查询函数,并构建查询所对应的View,Batch Layer可以很好的处理离线数据。
  • Speed Layer : 处理的是最近的增量数据流。为了效率,在接收到新的数据后会不断更新Real-time View
  • Serving Layer : Serving Layer用于合并Batch View和Real-time View中的结果数据集到最终数据集

Kampa.png

一个典型的Lamba技术架构如下

lampa.png

2.Kappa 架构

  为什么我们不能改进流计算系统让它能处理这些问题?为什么不能让流系统来解决数据全量处理的问题?流计算天然的分布式特性注定其扩展性比较好,能否加大并发量来处理海量的历史数据?基于种种问题的考虑,Jay提出了Kappa这种替代方案。

kappa.png

  利用流计算系统对全量数据进行重新计算,步骤如下:

    1、用Kafka或类似的分布式队列保存数据,需要几天数据量就保存几天。

    2、当需要全量计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个结果存储中。

    3、当新的实例完成后,停止老的流计算实例,并把老的一引起结果删除。

    一个典型的Kappa架构如下,

kappa2.png

图片.png

3.应用场景

  a.Kappa架构

  场景1:基于StreamSQL引擎的智慧交通,实时监控和预警;

  场景2:数据量不够TB级别,但是传统关系型查询又不能满足要求;

  b.Lamdba架构。

  场景1:海量数据分析,需要长时间批处理计算并且有实时计算的场景。

  场景2:保留传统数据仓库的最佳实践,又需要批处理和实时处理的业务场景

推荐 2
本文由 贝克汉姆 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册