Lambda架构和Kappa架构

Lambda架构
  • Lambda系统架构定义了一套明确的架构原则,如果要建立一个强大的和可扩展的数据系统,必须服从下面的架构图。
    在这里插入图片描述
  • Lambda架构的原则
    • 人为容错性:系统易数据丢失或者数据损坏,大规模时可能是无法挽回的
    • 数据不可变性:数据存储在它的最原始的形式是不变的,永久的。
    • 重新计算:运行函数重新计算结果
  • Lambda架构由三层组成:批处理层 服务层 速度层,如上图的架构图中所示
  • 一个典型的 lambda架构
    Lambda架构
    • 系统从一个流中读取被我们定义为不可变的数据,分别灌入实时系统如Storm和批处理系统如Hadoop,然后各自输出自己的结果,这些结果会在查询端进行合并。
  • 存在的问题
    • Jay Kreps认为Lambda包含固有的开发和运维的复杂性。Lambda需要将所有的算法实现两次,一次是为批处理系统,另一次是为实时系统,还要求查询得到的是两个系统结果的合并。
Kappa架构
  • Kappa架构,是对Lambda的深入优化,解决了Lambda存在的问题
    在这里插入图片描述
  • Kappa架构的核心思想
    1. 用Kafka或者类似的分布式队列系统保存数据,需要几天的数据量就保存几天
    2. 当需要全量重新计算时,重新起一个流计算实例,从头开始读取数据并进行处理,输出到一个新的存储中
    3. 当新的实例做完后,停止老的六计算实例,并把老的一些结果删除
两个架构的对比
  • 和Lambda架构相比,在Kappa架构下,只有在有必要的时候才会对历史数据进行重复计算,并且实时计算和批处理过程使用的同一份代码。
  • Kappa架构下可以启动很多个实例进行重复计算,因此在需要对一些算法模型进行调优时,Kappa架构下只需要更改一套系统的参数即可,并且允许对新老数据进行效果比对;但是在Lambda架构下,需要同时更改流计算系统算法模型和批处理系统算法模型,调参过程相对比较复杂。
  • Kappa架构下,开发人员只需要面对一个框架,开发、测试和运维的难度都会相对较小,这是个非常重要的优点。
发布了28 篇原创文章 · 获赞 35 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40125653/article/details/104059507