Lambda架构主要分为三层,批处理层、加速层和服务层。
如下图所示:
(1)批处理层(Batch Layer):存储数据集,在数据集上预先计算查询函数,并构建查询对应的view。Batch Layer可以很好地处理离线数据。当很多场景需要实时查询的时候,则需要Speed Layer
(2)加速层(Speed Layer):batch layer处理的是全体数据集,speed layer处理的是增量数据流。Speed layer接收到数据后会不断更新Real-time view,而Batch Layer是根据全体离线数据集直接得到Batch View。
(3)服务层(serving layer):Serving layer用于合并Batch View 和Real-time view中的结果数据集到最终数据集。
1、批处理
批处理有两个核心功能,存储数据集和生成Batch View。该层主要负责主数据集,主数据集有以下三个属性:
(1)数据是原始的
(2)数据是不可变的
(3)数据永远真实的
2、加速层
它存储实时视图并传入数据流,以便更新这些视图。
Speed Layer和Batch Layer的区别如下:
(1)speed layer处理数据是最近的增量数据流,batch layer是全体数据集。
(2)Speed layer为了效率,接收到新数据时不断更新Real-time view,而Batch Layer是根据全体离线数据集直接得到Batch View。
分为加速层和批量层的好处有哪些?
容错性:当speed layer重新计算后,当前的real-time view就可以丢弃,而batch view也是重新计算的。
复杂性隔离:批量处理离线数据很好掌握,加速层处理增量数据隔离出来。
Scale out:横向扩展,通过增加机器来扩展,而不是增加机器性能scale up。
3、服务层
用于响应用户查询,合并batch view和real-time view中的结果集得到最终数据集。该层提供了主数据集上执行的计算结果的低延迟访问。读取速度可以通过数据附加的索引来加速。