[系统架构设计师]大数据架构设计理论与实践(十九)

[系统架构设计师]大数据架构设计理论与实践(十九)

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

1.传统数据库的数据过载问题

传统应用的数据系统架构设计时,应用直接访问数据库系统。当用户访问量增加时,数据库无

法支撑日益增长的用户请求的负载,从而导致数据库服务器无法及时响应用户请求,出现超时的错

误。

解决方案:

1)增加异步处理队列,通过工作处理层批量处理异步处理队列中的数据修改请求

2)建立数据库水平分区,通常建立Key分区,以主键/唯一键Hash值作为Key

3)建立数据库分片或重新分片,通常专门编写脚本来自动完成,且要进行充分测试

4)引入读写分离技术,主数据库处理写请求,通过复制机制分发至从数据库

5)引入分库分表技术,按照业务上下文边界拆分数据组织机构,拆分单数据库压力

2.大数据的特点

体量大,时效性强

大数据处理技术分类:

1)基于分布式文件系统Hadoop

2)使用Map/Reduce或Spark数据处理技术

3)使用Kafka数据传输消息队列及Avro二进制格式

3.大数据利用过程

过程:采集,清洗,统计,挖掘

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

1.大数据处理系统面临挑战

1)如何利用信息技术等手段处理非结构化和半结构化数据

2)如何探索大数据复杂性,不确定性特征描述的刻画方法及大数据的系统建模

3)数据异构性与决策异构性的关系对大数据知识发现与管理决策的影响

2.大数据应具有的属性和特征包括

鲁棒性和容错性,低延迟,横向扩展(通过增强机器性能扩展),通用,可扩展,即席查询(用户按照自己的要求查询),最少维护和可调试

三.典型的大数据架构

1.Lambda架构

同时处理离线和实时数据的,可容错的,可扩展的分布式系统

在这里插入图片描述

1)批处理层:存储主数据集,主数据集具有原始,不可变,真实的特征。

批处理层周期性地将增量数据转储至主数据集,并在主数据集上执行批处理,生成批视图

架构实现方面可以使用Hadoop HDFS或Hbase存储主数据集,再利用Spark或MapReduce执行周期批处理,之后使用MapReduce创建批视图

2)加速层:处理增量实时数据,生成实时视图,快速执行即席查询。架构实现方面可以使用Hadoop HDFS或Hbase存储实时数据,利用Spark或Storm实现实时数据处理和实时视图

3)服务层:响应用户请求,合并批视图和实时视图中的结果数据集得到最终数据集。具体来说就是接收用户请求,通过索引加速访问批视图,直接访问实时视图,然后合并两个视图的结果数据集生成最终数据集,响应用户请求,架构实现方面可以使用Hbase或Cassandra作为服务层,通过Hiva创建可查询的视图

Lambda架构优缺点:

优点:容错性好,查询灵活度高,弹性伸缩,易于扩展

缺点:编码量大,持续处理成本高,重新部署和迁移成本高

相似模式:事件溯源模式,命令查询分离职责模式

2.Kappa架构

在Lambda上删除Batch Layer,数据通道以消息队列替代

在这里插入图片描述

1)实时层:该层核心功能是处理输入数据,生成实时视图。采用流式处理引擎逐条处理输入数据,生成实时视图。架构实现方式是采用Apache Kafka回访数据,然后采用Flink或Spark Streaming进行处理

2)服务层:使用实时视图中的结果数据集响应用户请求,实践中使用数据湖中的存储作为服务层

优点:离线和实时处理代码进行了统一,方便维护

缺点:消息中间件有性能瓶颈,数据关联时处理开销大,抛弃了离线计算的可靠性

Kappa架构常见变形是Kappa+架构,混合分析系统Kappa架构

在这里插入图片描述
在这里插入图片描述

3.Lambda架构和Kappa架构的对比

在这里插入图片描述

4.影响Lambda架构和Kappa架构选择的决策因素

在这里插入图片描述

四.大数据架构的实践

1.大规模视频网络

某网采用以Lambda架构搭建的大数据平台处理里约奥运会大规模视频网络观看数据,平台架构设计如图

在这里插入图片描述

数据计算层:离线计算,实时计算,合并计算

1)离线计算部分:存储持续增长的批量离线数据,周期性使用Spark和Map/Reduce批处理,批处理结果更新到批视图之后使用Impala或者Hive建立数据仓库,结果写入HDFS

2)实时计算部分:Spark Streaming,只处理实时增量数据,将处理后的结果更新到实时视图

3)合并计算部分:合并批视图和实时视图中的结果,生成最终数据集,将最终数据集写入Hbase数据库中用于响应用户的查询请求

2.广告平台

某网基于Lambda架构的广告平台。批处理层,加速层,服务层

在这里插入图片描述

1)批处理层:每天凌晨将Kafka中浏览,下单等消息同步到HDFS中,将HDFS中数据解析为Hive表,然后使用HQL或Spark SQL计算分区统计结果Hive表,将Hive表转储到MySQL中作为批视图

2)加速层:使用Spark Streaming实时监听Kafka下单,付款等消息,计算每个追踪链接维度的实时数据,将实时计算结果存储在Redis中作为实时视图

3)服务层:采用Java Web服务,对外提供HTTP接口,Java Web服务读取MySQL批视图表和Redis实时视图表

3.公司智能决策大数据系统

某证券公司智能决策大数据系统是一个基于Kappa架构的实时日志分析平台

在这里插入图片描述

1)日志采集:用统一的数据处理引擎Filebeat实时采集日志并推送给Kafka缓存

2)日志清洗解析:利用基于大数据计算集群的Flink计算框架实时读取Kafka消息并进行清洗,解析日志文本转换成指标

3)日志存储: 日志转储到ElasticSearch日志库,指标转储到OpenTSDB指标库

4)日志监控:单独设置告警消息队列,保持监控消息时序管理和实时推送

5.电商智能决策大数据系统

基于Kappa架构,统一数据处理引擎Funk实时处理流数据,存储到数据仓库工具Hive与分布式缓存Tair中,供后续决策服务的使用

在这里插入图片描述

实时处理过程如下:

1)数据采集:B端实时采集用户点击,下单,广告曝光,出价等数据推送给Kafka缓存

2)数据清洗聚合:由Flink实时读取Kafka消息,按需过滤参与业务需求的指标,将聚合时间段的数据转换成指标

3)数据存储:Flink将计算结果转储至Hive日志库,将模型需要的参数转储至实时计算数据库Tair缓存,然后后续决策服务从Tair中获取数据进行模型训练

,广告曝光,出价等数据推送给Kafka缓存

2)数据清洗聚合:由Flink实时读取Kafka消息,按需过滤参与业务需求的指标,将聚合时间段的数据转换成指标

3)数据存储:Flink将计算结果转储至Hive日志库,将模型需要的参数转储至实时计算数据库Tair缓存,然后后续决策服务从Tair中获取数据进行模型训练

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

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

相关文章

UniAD

1. 算法动机及开创性思路 1)UniAD算法简介 算法全称:Planning-oriented Autonomous Driving核心特点: 统一框架整合感知、预测、规划模块CVPR 2023最佳论文采用查询(query)方式连接各模块 名称含义: Unified:统一多模块…

ESP-NOW详解(esp-idf)

esp-now目前主要支持单播和广播,广播地址为ff:ff:ff:ff:ff:ff,广播可以向范围内所有拥有esp-now接收的设备发送数据 注意事项,网络模式是可以设置网络mac地址的,在单播中,目标设备网络模式选择为ap时,mac地址会发生改…

`strlen` 字符串长度函数

1) 函数的概念与用途 strlen 是 C 语言标准库中最基础且使用最频繁的字符串处理函数之一,它的名字来源于"string length"(字符串长度)。这个函数的功能非常明确:计算一个以空字符结尾的字符串的长度。 可以将 strlen 想…

TorchInductor - Introduction

PyTorch 2.x通过TorchDynamo通过Python Bytecode的动态变换实现了图捕获功能,需要搭配一个Compiler Backend完成图编译。 Pytorch尝试集成了多个后端,并使用一个轻量级的autotuner来选择最优的后端图编译结果。这个解决方案存在2个问题: 这…

Adobe Illustrator默认键盘快捷键

目录 默认键盘快捷键 常用的快捷键 处理文档 选择工具 查看图稿 处理所选对象 绘制 编辑形状 处理实时上色组 处理对象 创建可变宽度点 处理文字 使用面板 动作面板 “画笔”面板 “字符”和“段落”面板 “颜色”面板 “渐变”面板 “图层”面板 “色板”…

「数据获取」《中国能源统计年鉴》(1986-2023)(获取方式看绑定的资源)

01、数据简介一、年鉴基本定位与发展历程《中国能源统计年鉴》作为一部权威性极强的能源领域资料典籍,始终以全面、精准反映中国能源建设推进、生产运行、消费态势以及供需平衡状况为核心使命。其编纂工作发轫于 1986 年,最初由国家统计局工业交通统计司…

SpringBoot3系列---【SpringBoot3集成sqlite】

SpringBoot3集成sqlite 1.引入pom.xml <dependencies><dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.34.0</version></dependency><dependency><groupId>com.…

头部 TTS 开源项目深度对比

语音合成&#xff08;TTS&#xff09;开源项目是技术研究与产业落地的核心支撑&#xff0c;不同项目因技术路线、设计目标差异&#xff0c;在语言覆盖、合成自然度、可扩展性等方面表现悬殊。本文选取当前开源生态中应用最广、影响力最大的五大 TTS 项目——MaryTTS、Coqui TTS…

可视化-模块1-HTML-02

1-新建一个HTML文档&#xff0c;命名为&#xff1a;week1-12-<h1>标签<body><h1>这是标题 1</h1> <h2>这是标题 2</h2> <h3>这是标题 3</h3> <h4>这是标题 4</h4> <h5>这是标题 5</h5> <h6>这是…

搜索算法在实际场景中的应用

1. 数据库系统 B+树索引 应用场景:关系型数据库(MySQL、PostgreSQL等)的索引实现 算法特点: 平衡多路搜索树,优化磁盘I/O 支持范围查询和排序操作 典型实现: CREATE INDEX idx_name ON users(last_name); 哈希索引 应用场景:键值存储(Redis、Memcached)、等值查询 算…

基础IO

目录 一、进程和文件的关系 二、背景补充 三、打开文件接口 (1) FILE *fopen(const char* filename , const char *mode) &#xff08;2&#xff09;open 系统调用 文件描述符 open和fopen的关系 &#xff08;3&#xff09;size_t fwrite&#xff08;const void * ptr, …

SpringBoot快速上手

SpringBoot快速上手 环境准备 IDEA版本: 社区版:2021.1-2022.1.4 专业版:无要求 Maven 官方对于Maven的描述: Maven是一个项目管理工具,基于POM(Project Object Model,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告文档和项目管理工具软件. 人…

GitHub Actions workflow最佳实践

使用 GitHub Actions Workflow 时&#xff0c;遵循最佳实践可以显著提升自动化效率、安全性和可维护性。以下是经过实践验证的核心最佳实践&#xff0c;涵盖配置设计、性能优化、安全防护等维度&#xff0c;并附具体示例&#xff1a; 一、工作流组织与触发优化 1. 拆分工作流&a…

JAVA读取项目内的文件或图片

一、读取resources下的文件或图片&#xff1b;文件或图片位置&#xff1a;代码&#xff1a;InputStream fis Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" xxx.jpg);二、读取项目内任意位置的文件或图片。文件或图片位置&…

Python如何将两个列表转化为一个字典

一、使用zip函数 zip函数是Python内置的一个强大工具&#xff0c;它可以将多个迭代器&#xff08;如列表、元组等&#xff09;“压缩”成一个迭代器&#xff0c;其中每个元素都是一个元组。使用zip函数将两个列表转换为字典是最常见的方法。 1、基本用法 keys [a, b, c] value…

Vue 3 useModel vs defineModel:选择正确的双向绑定方案

&#x1f4d6; 概述 useModel() 是 Vue 3.4 版本中引入的一个组合式 API 辅助函数&#xff0c;它是驱动 defineModel() 的底层实现。这个函数主要用于在非单文件组件中实现双向数据绑定&#xff0c;特别是在使用原始的 setup() 函数时。 ⚠️ 重要提示&#xff1a;如果使用 <…

数据库备份sql文件过大,phpAdmin无法执行Sql

数据库导出为sql文件&#xff0c;文件太大导致无法再Sql query执行&#xff0c;可使用命令行执行&#xff1a; windows系统&#xff1a; 1.切换到mysql 安装目录的bin目录下 cd C:\xampp\mysql\bin 2.执行备份sql还原mysql数据库 mysql -u root -p databasename < C://backu…

三格电子——ModbusTCP 转 Profinet 主站网关应用实例

型号&#xff1a;SG-TCP- Profinet(M)一、使用场景ModbusTCPClient 通过 ModbusTCP 控制 Profinet 接口设备&#xff0c; Profinet 接口设备接入DCS/工控机等。产品是ModbusTCP和Profinet(M)网关&#xff08;以下简称网关&#xff09;&#xff0c;使用数据映射 方式工作。 本产…

网址账号正确,密码错误返回的状态码是多少

问题网址账号正确&#xff0c;密码错误返回的状态码是多少我的回答当账号正确但密码错误时&#xff0c;服务器通常会返回401 Unauthorized状态码。这个状态码表示"未授权"&#xff0c;意味着客户端请求缺乏有效的身份验证凭据&#xff0c;或者提供的凭据无效。在实际…

JAVA核心基础篇-操作符

Java 操作符是用于操作变量和值的特殊符号&#xff0c;主要分为以下几类&#xff1a;1. 算术运算符用于执行基本的数学运算&#xff1a;&#xff1a;加法&#xff08;也可用于字符串拼接&#xff09;-&#xff1a;减法*&#xff1a;乘法/&#xff1a;除法&#xff08;整数相除取…