写点什么

题目二:架构设计题

作者:arctec
  • 2021 年 11 月 15 日
  • 本文字数:1200 字

    阅读完需:约 4 分钟

设计一套基于 Lambda 架构的数据平台架构,要求尽可能多的把课程中涉及的组件添加到该架构图中。并描述 Lambda 架构的优缺点,要求不少于 300 字。

设计方案:

一、 设计需求及背景。

在讨论实时计算的问题。但真实的世界里,很多事情都不尽人愿。有时候,因为算法复杂度过高、数据量过大,我们并不能通过直接的实时计算,获得想要的结果,但可以何制定出一个可以真实落地的系统架构方案,这个方法被称作 Lambda 架构,它通过批量 MapReduce 作业提供了虽有些延迟但是结果准确的计算,同时通过 Storm 将最新数据的计算结果初步展示出来。

Lambda 架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等。

Lambda 架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成 Hadoop,Kafka,Storm,Spark,Hbase 等各类大数据组件。

二、 Lambda 架构设计

(一)Lambda 系统架构图


Lambda 架构总体上分为三层:批处理层(batch layer)、快速处理层(speed layer)和服务层(serving layer)。


1.批处理层:

负责处理主数据集(也就是历史全量数据)。

即存储数据集,在数据集上预先查询函数,构建查询所对应的视图。

2.服务层用:

响应用户查询需求,合并批处理视图和实时视图中的结果数据集到最终的数据集。

3.快速处理层:

负责处理增量数据(也就是新进入系统的数据),是实时处理平台的具体实现。

(二)Lambda 系统架构产品选型说明

Lambda 架构是一种架构设计思路,针对每一层的技术组件选型并没有严格限定。我们可以根据自己公司和项目的实际情况,选择相应的技术方案。

1. 对于批处理层。

数据存储可以选择 HDFS、S3 等大数据存储系统,而计算工具则可以选择 MapReduce、Hive、Spark 等大数据处理框架。批处理层的计算结果(比如数据库表或者视图),由于需要被服务层或快速处理层快速访问,所以可以存放在诸如 MySQL、HBase 等能够快速响应查询请求的数据库中。

2.对于服务层。

当其接收到查询请求时,就可以分别从存储批处理层和快速处理层计算结果的数据库中,取出相应的计算结果并做合并,就能得到最终的查询结果了。

2、对于快速处理层。

这就是各种流计算框架的用武之地了,比如 Flink、Spark Streaming 和 Storm 等。快速处理层由于对性能要求更加严苛,它们的计算结果可以存入像 Redis 这样具有超高性能表现的内存数据库中。不过有时候为了查询方便,也可以将计算结果存放在 MySQL 等传统数据库中,毕竟这些数据库配合缓存一起使用的话,性能也满足需求。

三、  Lambda 架构不足之处。

虽然 Lambda 架构实现了间接的实时计算,但它也存在一些问题。其中最主要的问题之一就是对于同一个查询目标,需要分别为批处理层和快速处理层开发不同的算法实现。

即对于相同的逻辑,需要开发两种不同的代码,并使用两种不同的计算框架(比如同时使用 Storm 和 Spark),这对开发、测试和运维,都带来一定的复杂性和额外工作。

 

发布于: 2 小时前阅读数: 7
用户头像

arctec

关注

还未添加个人签名 2019.08.21 加入

还未添加个人简介

评论

发布
暂无评论
题目二:架构设计题