系统架构设计高级技能 · 大数据架构设计理论与实践

news2024/12/29 9:43:20

系列文章目录

系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】
系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

系统架构设计高级技能 · 大数据架构设计理论与实践

  • 系列文章目录
  • 一、传统数据处理系统的问题
    • 1.1 传统数据库的数据过载问题
    • 1.2 大数据的特点
    • 1.3 大数据的利用过程
  • 二、大数据处理系统架构分析
    • 2.1 大数据处理系统面临的挑战
    • 2.2 大数据处理系统的特征
  • 三、典型的大数据架构
    • 2.1 Lambda架构
    • 2.2 Kappa架构
    • 2.3 Lambda架构与Kappa架构对比
  • 四、大数据架构的实践
    • 4.1 大规模视频网络
    • 4.2 广告平台
    • 4.3 电商智能决策大数据系统

在这里插入图片描述

一、传统数据处理系统的问题

1.1 传统数据库的数据过载问题

传统应用的数据系统架构设计时,应用直接访问数据库系统。当用户访问量增加时,数据库无法支撑日益增长的用户请求的负载,从而导致数据库服务器无法及时响应用户请求,出现超时的错误。

关于这个问题的常用解决方法如下
(1)增加异步处理队列
(2)建立数据库水平分区
(3)建立数据库分片或重新分片
(4)引入读写分离技术
(5)引入分库分表技术

1.2 大数据的特点

大数据具有体量大、失效性强的特点,并非构造单调,二是类型多样;处理大数据时,传统数据处理系统因数据过载,来源复杂,类型多样等诸多原因性能低下,需要采用以新式计算架构和智能算法为代表的新技术;大数据的应用重在发掘数据间的相关性,而非传统逻辑上的因果关系;因此,大数据的目的和价值就在于发现新的知识,洞悉并进行科学决策。

现代大数据处理技术,主要分为以下几种

(1)基于分布式文件系统Hadoop。
(2)使用Map/Reduce或Spark数据处理技术。
(3)使用Kafaka数据传输消息队列及Avro二进制格式。

1.3 大数据的利用过程

大数据的利用过程分为:采集、清洗、统计和挖掘 4个过程。

二、大数据处理系统架构分析

2.1 大数据处理系统面临的挑战

大数据处理系统面临的挑战主要有
(1)如何利用信息技术等手段处理非结构化和半结构化数据。
(2)如何探索大数据的复杂性、不确定性特征描述的刻画方法及大数据的系统建模。
(3)数据异构性与决策异构性的关系对大数据知识发现与管理决策的影响。

2.2 大数据处理系统的特征

大数据处理系统应具有的属性和特征包括
鲁棒性和容错性、低延迟性、横向扩展(通过增强机器性能扩展)、通用、可扩展、即席查询(用户按照自己的要求进行查询)、最少维护和可调试。

三、典型的大数据架构

2.1 Lambda架构

Lambda架构是一种用于同时处理离线和实时数据的、可容错性、可扩展性的分布式系统。

如图,Lambda架构:
在这里插入图片描述

Lambda架构分为以下3层:
(1)批处理层 (Batch Layer):存储数据集, 该层核心功能是存储主数据集,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中的结果数据集到最终数据集。

Lambda架构优缺点:

优点
(1)容错性好。 Lambda 架构为大数据系统提供了更友好的容错能力,一旦发生错误,我们
可以修复算法或从头开始重新计算视图。
(2)查询灵活度高。批处理层允许针对任何数据进行临时查询。
(3)易伸缩。所有的批处理层、加速层和服务层都很容易扩展。因为它们都是完全分布式
的系统,我们可以通过增加新机器来轻松地扩大规模。
(4)易扩展。添加视图是容易的,只是给主数据集添加几个新的函数。

缺点
(1)全场景覆盖带来的编码开销。
(2)针对具体场景重新离线训练一遍益

2.2 Kappa架构

Kappa架构是在Lamada架构的基础上进行了优化、删除了Batch Layer的架构,将数据通道以消息队列进行替代。
在这里插入图片描述

从使用场景上来看, Kappa架构与Lambda相比,主要有两点区别:

(1)Kappa不是 Lambda的替代架构,而是其简化版本, Kappa放弃了对批处理的支持,更擅长业务本身为增量数据写入场景的分析需求,例如各种时序数据场景,天然存在时间窗口的概念,流式计算直接满足其实时计算和历史补偿任务需求;

(2)Lambda直接支持批处理,因此更适合对历史数据分析查询的场景,比如数据分析师需要按任意条件组合对历史数据进行探索性的分析,并且有一定的实时性需求,期望尽快得到分析结果,批处理可以更直接高效地满足这些需求。

Kappa架构的优点在于将实时和离线代码统一起来,方便维护而且统一了数据口径的问题,避免了 Lambda架构中与离线数据合并的问题,查询历史数据的时候只需要重放存储的历史数据即可。

而Kappa的缺点也很明显:

(1)消息中间件缓存的数据量和回溯数据有性能瓶颈。通常算法需要过去180天的数据,如果都存在消息中间件,无疑有非常大的压力。同时,一次性回溯订正180天级别的数据,对实时计算的资源消耗也非常大。

(2)在实时数据处理时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流先后顺序问题,导致数据丢失。

(3)Kappa 在抛弃了离线数据处理模块的时候,同时抛弃了离线计算更加稳定可靠的特点。Lambda虽然保证了离线计算的稳定性,但双系统的维护成本高且两套代码带来后期运维困难。对于以上Kappa框架存在的几个问题,目前也存在一些解决方案,对于消息队列缓存数据性能的问题, Kappa+框架提出使用 HDFS来存储中间数据。针对 Kappa框架展示层能力不足的问题,也有人提出了混合分析系统的解决方案。

2.3 Lambda架构与Kappa架构对比

Lambda架构和Kappa 架构对比

对比内容Lambda架构Kappa架构
复杂度与开发、维护成本需要维护两套系统(引擎),复杂度 高,开发、维护成本高只需要维护一套系统(引擎),复杂度低,开发、维护成本低
计算开销需要一直运行批处理和实时计算,计算开销大必要时进行全量计算,计算开销相对较小
实时性满足实时性满足实时性
历史数据处理能力批式全量处理,吞吐量大,历史据处理能力强流式全量处理,吞吐量相对较低,历史数据处理能力相对较弱

Lambda架构与Kappa架构的设计选择

根据两种架构对比分析,将业务需求、技术要求、系统复杂度、开发维护成本和历史数据处理能力作为选择考虑因素。而计算开销虽然存在一定差别,但是相差不是很大,所以不作为考虑因素。

(1)业务需求与技术要求
用户需要根据自己的业务需求来选择架构,如果业务对于 Hadoop、Spark、Strom 等关键技术有强制性依赖,选择 Lambda架构可能较为合适;如果处理数据偏好于流式计算,又依赖Flink计算引擎,那么选择Kappa架构可能更为合适。

(2)复杂度
如果项目中需要频繁地对算法模型参数进行修改, Lambda架构需要反复修改两套代码,则显然不如 Kappa架构简单方便。同时,如果算法模型支持同时执行批处理和流式计算,或者希望用一份代码进行数据处理,那么可以选择Kappa 架构。在某些复杂的案例中,其实时处理和离线处理的结果不能统一,比如某些机器学习的预测模型,需要先通过离线批处理得到训练模型,再交由实时流式处理进行验证测试,那么这种情况下,批处理层和流处理层不能进行合并,因此应该选择Lambda架构。

(3)开发维护成本
Lambda架构需要有一定程度的开发维护成本,包括两套系统的开发、部署、测试、维护,适合有足够经济、技术和人力资源的开发者。而Kappa 架构只需要维护一套系统,适合不希望在开发维护上投入过多成本的开发者。

(4)历史数据处理能力
有些情况下,项目会频繁接触海量数据集进行分析,比如过往十年内的地区降水数据等,这种数据适合批处理系统进行分析,应该选择Lambda架构。如果始终使用小规模数据集,流处理系统完全可以使用,则应该选择Kappa架构。

四、大数据架构的实践

4.1 大规模视频网络

如图,某网奥运中的Lambda架构:
在这里插入图片描述

4.2 广告平台

如图,某网广告平台中的Lambda架构:
在这里插入图片描述

如图,某证券大数据系统架构:
在这里插入图片描述

4.3 电商智能决策大数据系统

如图,某电商智能决策大数据系统架构:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/932338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新WAF信息收集技术

WAF信息收集 目前,市面上的WAF大多都部署了云服务进行防护加固,让WAF的防护性能得到进一步提升。 图1-32所示为安全狗最新版服务界面,增加了“加入服云”选项。 安全狗最新版服务界面,不仅加强了传统的WAF防护层,还增…

七层、四层和五层网络模型区别和联系

七层、四层和五层网络模型区别和联系 概述OSI网络7层模型(概念型框架)概述图片分析 四层模型概述常用协议OSI与TCP/IP四层的区别 五层模型概述三种网络模型对比 总结 概述 网络模型-七层模型(OSI模型)、五层协议体系结构和TCP/IP…

[C++ 网络协议] 多进程服务器端

具有代表性的并发服务器端实现模型和方法: 多进程服务器:通过创建多个进程提供服务。✔ 多路复用服务器:通过捆绑并统一管理I/O对象提供服务。 多线程服务器:通过生成与客户端等量的线程提供服务。 1. 进程的概念及应用 1.1 什么…

基于算术优化算法优化的BP神经网络(预测应用) - 附代码

基于算术优化算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于算术优化算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.算术优化优化BP神经网络2.1 BP神经网络参数设置2.2 算术优化算法应用 4.测试结果:5…

mybatis自动生成文件配置记录

记录下mybatis自动生成mapper文件&#xff0c;虽然现在有点过时了&#xff0c;但对于新手来说还是有一定用处的&#xff08;diss下通过这种文章引流关注的博主&#xff09;。 比较简单&#xff0c;基本就三步搞定&#xff01; 1、pom配置 <!--mybatis自动生成代码插件-->…

【Qt学习】07:绘图与绘图设备

OVERVIEW 绘图与绘图设备一、QPainter二、QPainterDevice1.QPixmap2.QBitmap3.QImage4.QPicture 绘图与绘图设备 一、QPainter Qt 的绘图系统允许使用API在屏幕和其它打印设备上进行绘制&#xff0c;整个绘图系统基于QPainter&#xff0c;QPainterDevice和QPaintEngine三个类&…

Eplan软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Eplan软件是一款专为电气专业设计开发的软件&#xff0c;旨在提高电气设计的效率和质量。以下是Eplan软件的详细介绍。 1、Eplan的历史和演变 Eplan是一款由德国Eplan公司开发的电气设计软件&#xff0c;自1984年推出以来&…

如何在windows电脑上安装多个node,并可以进行随意切换

一、进入官网http://nvm.uihtm.com/ 下载 二、启动解压后的程序 1.开始安装nvm 选择要安装的目录 一直下一步–下一步–最后点击完成 3.最后点击完成即可 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3656568c7e9946e8a04219811fc4c4d3.png 三、在cmd控制台进行操作…

VMware ESXi 7.0 优化VMFSL磁盘占用与系统存储大小

文章目录 VMware ESXi 7.0 优化VMFSL磁盘占用与系统存储大小引言创建ESXi7.0可启动 U 盘结果检查VMware ESXi 7.0 优化VMFSL磁盘占用与系统存储大小 引言 本文讲述了在 J1900平台上安装ESXi7.0时减少 VMFSL 分区占用的说明, 通常这来说些主机内置的磁盘空间非常小, 采用默认安…

uniapp返回上一页并刷新

在uniapp中&#xff0c;经常会有返回上一页的情况&#xff0c;官方提供有 uni.navigateBack 这个api来实现效果&#xff0c;但是此方法返回到上一页之后页面并不会更新&#xff08;刷新&#xff09;。 例如有这样一个场景&#xff1a;从地址列表页点击添加按钮进入添加地址页面…

Aidex 移动端快速开发框架# RuoYi-Uniapp项目,uniapp vue app项目跨域问题

参考地址&#xff1a; manifest.json官方配置文档&#xff1a;manifest.json 应用配置 | uni-app官网 Chrome 调试跨域问题解决方案之插件篇&#xff1a; uni-app H5跨域问题解决方案&#xff08;CORS、Cross-Origin&#xff09; - DCloud问答 其实uni-app官方有解决跨域的办…

「MySQL-01」MySQL基础

目录 一、数据库概念 1. 什么是数据库 2. 为什么要有数据库&#xff1f; 3. 数据库将数据存在哪里&#xff1f; 二、知名数据库介绍 1.知名数据库介绍 2.为什么要学习MySQL 三、MySQL的基本使用 0. 安装MySQL 1. 数据库客户端链接服务端 2. Windows下的MySQL服务端管理 3. 数据…

Pygame编程(10)freetype模块

Pygame编程&#xff08;10&#xff09;freetype模块 函数示例 函数 pygame.freetype.get_error 返回最新的FreeType错误get_error() -> strget_error() -> None pygame.freetype.get_version 返回FreeType版本get_version(linkedTrue) -> (int, int, int) pygame.fre…

斯坦福人生设计课——简略笔记

来源&#xff1a;⽐尔博内特 戴夫伊万斯 著图书《人生设计课》 目录 一、认清当下的情况&#xff0c;从四个维度观察自己的人生 二、平衡人生&#xff0c;但不要走入误区 2.1 记录你的“美好时光日志”&#xff1a; 2.1.1 记录内容&#xff1a; 2.1.2 辅助反思的方法&…

C# 学习笔记--个人学习使用 <2>

C# 学习笔记 Chapter 2 比较硬的基础部分Section 1 委托Part 1 Action 与 func 委托的示例Part 2 自定义委托Part 3 委托的一般使用Part 4 委托的高级使用Part 5 适时地使用接口 Interface 取代一些对委托的使用 Section 2 事件Part 1 初步了解事件Part 2 事件的应用Part 3 事件…

图神经网络与分子表征:番外——基组选择

学过高斯软件的人都知道&#xff0c;我们在撰写输入文件 gjf 时需要准备输入【泛函】和【基组】这两个关键词。 【泛函】敲定计算方法&#xff0c;【基组】则类似格点积分中的密度&#xff0c;与计算精度密切相关。 部分研究人员借用高斯中的一系列基组去包装输入几何信息&am…

快速安装Qt开发环境,克服在线安装慢等问题

自从Qt6之后&#xff0c;QtCreater的安装都需要注册账号&#xff0c;并且使用账号在线安装&#xff0c;继续使用官网的资源站下载的话&#xff0c;会特别的慢&#xff0c;以下是提高在线安装速度的做法。 官网下载很慢&#xff0c;快速安装的方式如下 1、winR,输入CMD&#xff…

深入分析负载均衡情景

本文出现的内核代码来自Linux5.4.28&#xff0c;为了减少篇幅&#xff0c;我们尽量不引用代码&#xff0c;如果有兴趣&#xff0c;读者可以配合代码阅读本文。 一、有几种负载均衡的方式&#xff1f; 整个Linux的负载均衡器有下面的几个类型&#xff1a; 实际上内核的负载均衡…

关于述职答辩的一点思考和总结

公众号&#xff1a;赵侠客 侠客说&#xff1a;优秀人才的四个特征&#xff1a;格局、思路、实干、写作 一、前言 1.1 述职答辩的重要性 公司都会有晋升通道&#xff0c;述职答辩是你想升职加薪除了跳槽以外的必由之路&#xff0c;其重要性对个人发展来说不言而喻&#xff0c…

python的文件操作

前言 打印内容到屏幕 最简单的输出方式是调用print函数&#xff0c;此函数会将你传递的表达式转化成字符串表达式&#xff0c;并将结果写道标准输出中。 读取键盘输入 python提供了两个raw_input和input内置函数从标准输入中读取一行文本&#xff0c;默认的标准输入是键盘。 …