大家好,又见面了,我是你们的朋友全栈君。
大数据Lambda架构
Lambda体系架构简介
Lambda体系架构是一种开部署模型,主要用流处理来补充批处理,以解决实时大数据问题。理想情况下,我们扫描整个数据来达到用户的某个查询需求,而实际上访问如此海量的数据必然使得响应过慢。一般公司对可用性的要求比一致性要高,简言之即服务的可用性更为重要。选择高用性而不是一致性必然会导致较弱的一致性级别。写后读可能不会返回预期的响应。如果不进行读取修复,数据可能会一直损坏。而系统性的更新会埋下数据无法恢复的隐患。
为了解决这些问题,Lambda体系结构使用不可变的数据流,并在流计算的组合中利用预计算的批处理视图。不可变地存储数据消除了数据损坏的可能性,然而,不变的数据会导致更复杂的计算。 。Lambda架构为计算查询提供三层架构:批处理层、速度层和服务层。新传入的数据流进批处理层和速度层,服务层通过整合批处理层和速度层来响应用户的查询。
Batch Layer 批处理层
批处理层接收不可变的记录流并把它们持久化到存储系统里(如HDFS),存储层用来保存主数据。任何因为数据状态的改变(更新)都会在持久层里重新计算。同时它也为服务层的视图生成任务。与加速层相比批处理层耗时较多。它能修复加速层的计算缺陷,因为它拥有全量的数据。批处理层定期重新计算视图,并将结果输出到只读存储器。
Speed Layer 加速层
加速层主要负责动态计算实时视图。它能接受一个或多个数据源并从流数据里生成实时视图。一旦计算出视图,加速层将输出到可接受随机写的数据存储系统内。、 通常,在加速层应用流处理器Flink、Storm而Redis和Apache Cassandra适合实时视图的存储。
Serving Layer 服务层
服务层负责整合实时和批处理视图即它通过获取最新的加速层和批处理层数据并做整合最终输出汇聚后的视图。服务层的关键是保证给定查询的响应时间最短, 因此,服务层可以并行化视图的查询。当两个结果都完成时,它可以生成一个聚合视图。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152801.html原文链接:https://javaforall.cn