Lambda架构的三层 批处理层 加速层 服务层

Lambda架构是一种大数据处理架构,由Nathan Marz提出,它旨在处理大规模数据的批处理和实时处理问题。Lambda架构试图提供一种既能处理大量数据,又能提供低延迟查询和视图的系统。它主要由以下三层组成:

1. 批处理层(Batch Layer)

批处理层的目的是处理大量的历史数据。这一层负责存储和管理原始数据的不变性版本,并运行预定义的批处理作业来预计算结果。这些批处理作业通常是高延迟的(可能需要几分钟到几小时不等),但可以处理非常大的数据集,并确保数据的完整性和准确性。

批处理层通常使用分布式文件系统(如HDFS)来存储数据,并使用大数据处理框架(如Hadoop MapReduce或Apache Spark)来进行计算。

2. 加速层(Speed Layer)

速度层的主要目的是处理实时数据流,以便系统能够提供低延迟的数据视图。由于批处理层有较高的延迟,速度层补充了这一点,通过实时处理最近的数据更新来提供近乎实时的视图。速度层的输出通常是不完整的,并且只代表自上一次批处理作业以来发生的数据。

这一层通常使用流处理技术(如Apache Storm、Apache Flink或Kafka Streams)来处理即时数据流。

3. 服务层(Serving Layer)

服务层的作用是为用户查询提供响应。它将批处理层预计算的结果与速度层实时计算的结果合并,以提供一个全面的数据视图。服务层需要能够快速更新和查询,因此通常使用如NoSQL数据库(如Apache HBase或Cassandra)来支持这种需求。

在查询时,服务层会同时访问批处理层的预计算视图和速度层的实时视图,并将两者的结果合并以提供最终的查询结果。

Lambda架构的挑战

尽管Lambda架构在处理大规模数据系统的同时提供了批处理和实时处理的能力,但它也带来了一些挑战,如:

  • 复杂性:维护两套逻辑(批处理和实时处理)增加了系统的复杂性。
  • 数据延迟:批处理层可能会导致数据处理的延迟。
  • 资源消耗:运行两个系统(批处理和实时处理)需要更多的资源。

为了解决这些挑战,出现了一些替代架构,如Kappa架构,它只使用一个处理系统来处理实时数据流,同时也用于生成历史数据视图,从而减少了复杂性和资源消耗。

相关推荐
程序员JerrySUN3 小时前
OP-TEE + YOLOv8:从“加密权重”到“内存中解密并推理”的完整实战记录
android·java·开发语言·redis·yolo·架构
ZStack开发者社区4 小时前
替代VMware VCF | 详解ZStack Cloud开放架构与异构整合能力
架构
小股虫6 小时前
分布式事务:在增长中台,我们如何做到“发出去的内容”和“记录的数据”不打架?
分布式·微服务·云原生·架构·团队建设·方法论
乾元8 小时前
数据中心流量工程(TE)优化:当 AI 成为解决“维度诅咒”的唯一操纵杆
运维·服务器·网络·人工智能·架构·自动化
云器科技8 小时前
NinjaVan x 云器Lakehouse: 从传统自建Spark架构升级到新一代湖仓架构
大数据·ai·架构·spark·湖仓平台
用户91743965398 小时前
从单系统架构到微服务架构:软件现代化的转型综述
微服务·架构·系统架构
断春风8 小时前
从 JDK 8 到 JDK 21:企业级 Java 版本选择的架构思考
java·架构·jdk
h7ml9 小时前
构建可扩展的企业微信消息推送服务:事件驱动架构在Java中的应用*
java·架构·企业微信
墨辰JC9 小时前
STM32架构基于调度器的非阻塞按键状态机设计
stm32·microsoft·架构·状态机·调度器
Wang's Blog10 小时前
Lua: 事件处理深度解析之从协程到跨平台架构实践
junit·架构·lua