什么是Lambda架构?
一、简介
Lambda架构(Lambda Architecture)是由Twitter工程师南森·马茨(Nathan Marz)提出的大数据处理架构。
这一架构的提出基于马茨在BackType和Twitter上的分布式数据处理系统的经验。
Lambda架构使开发人员能够构建大规模分布式数据处理系统。它具有很好的灵活性和可扩展性,也对硬件故障和人为失误有很好的容错性。
Lambda 架构总共由三层系统组成:批处理层(Batch Layer),速度处理层(Speed Layer),以及用于响应查询的服务层(Serving Layer)。
1. Lambda架构定义了一套面向大数据应用的模式和准则。更重要的是,它允许同时查询历史数据和实时新增的数据,并且获得期望的分析视图。
2. 处理历史数据(批处理)和实时数据。
3. 技术无关和通用性。Lambda架构是一种通用的模式,完全不依赖于任何技术,而且任何技术只要能满足需求,都可以在 Lambda架构中应用。
4. Lambda架构清楚地把责任划分到不同的功能模块/层中。它按照层来划分职责,完美地遵循了设计模式中的关注点分离原则。
5. 与领域无关。作为一种通用的模式, Lambda架构可以应用于不同的业务领域。
二、Lambda的命名由来
我们通常认为这个希腊字母与这一模式相关联是因为数据来自两个地方。
批量数据和快速的流式数据代表Lambda符号的弯曲部分,然后通过服务层(线段与曲线部分合并)合并,如图所示。
三、详细介绍
在 Lambda 架构中,每层都有自己所肩负的任务。
1、批处理层
存储管理主数据集(不可变的数据集)和预先批处理计算好的视图。
批处理层使用可处理大量数据的分布式处理系统预先计算结果。
它通过处理所有的已有历史数据来实现数据的准确性。
这意味着它是基于完整的数据集来重新计算的,能够修复任何错误,然后更新现有的数据视图。
输出通常存储在只读数据库中,更新则完全取代现有的预先计算好的视图。
2、速度处理层
会实时处理新来的大数据。
速度层通过提供最新数据的实时视图来最小化延迟。
速度层所生成的数据视图可能不如批处理层最终生成的视图那样准确或完整,但它们几乎在收到数据后立即可用。
而当同样的数据在批处理层处理完成后,在速度层的数据就可以被替代掉了。
本质上,速度层弥补了批处理层所导致的数据视图滞后。
比如说,批处理层的每个任务都需要 1 个小时才能完成,而在这 1 个小时里,我们是无法获取批处理层中最新任务给出的数据视图的。
而速度层因为能够实时处理数据给出结果,就弥补了这 1 个小时的滞后。
3、服务层
所有在批处理层和速度层处理完的结果都输出存储在服务层中,服务层通过返回预先计算的数据视图或从速度层处理构建好数据视图来响应查询。
原文链接:https://cloud.tencent.com/developer/article/2103250