Apache Flink(二):数据架构演变

news2025/1/23 7:08:40

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客

 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。

 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频


目录

1. 业务处理-单体架构

2. 业务处理-微服务架构

3. 数据分析-大数据Lambda架构

​​​​​​​4. 有状态流计算架构


近年来随着越来越多的大数据技术被开源,例如:HDFS、Spark等,伴随这些技术的发展与普及,促使企业数据架构的演进——从传统的关系型数据存储架构逐步演化为分布式处理和存储的架构。我们通过数据架构的演变角度来了解下为什么今天Flink实时计算引擎会爆火起来。

​​​​​​​1. 业务处理-单体架构

传统单体架构最大的特点是集中式数据存储,一个企业中可能有很多业务系统,例如:订单系统、CRM系统、ERP系统等,这些系统的数据一般存储在关系型数据库中,这些存储的数据一般反应当前的业务状态,也就是存储的是支撑业务正常运转的事务数据,例如:系统订单交易量、网站活跃用户数、每个用户在线的状态等,针对这些数据库的操作也主要是增删改查操作,单体架构如下:

单体架构初期的效率很高,但是随着时间的推移,业务越来越多,业务系统逐渐变得庞大,越来越难维护与升级,并且不同的业务系统之间可能有一些共同的业务模块,并且一单业务系统依赖的数据库有问题会导致整个业务系统变的不可用,为了解决以上问题,企业开始逐渐采用微服务架构作为企业业务系统的架构体系。

​​​​​​​2. 业务处理-微服务架构

微服务架构的核心思想是一个应用由多个小的、相互独立的微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖,不同的服务能依据不同的业务需求,构建不同的技术架构之上,组成不同的业务系统应用。

微服务架构将系统拆解成不同独立的服务模块,每个模块分别使用各自独立的数据库,这种模式解决了业务系统的扩展问题,也带来了新的问题——业务交易数据过于分散在不同的系统中,很难将数据进行集中化管理。微服务架构如下:

无论是单体架构还是微服务架构主要针对的还是企业的业务系统,也就是业务平台,对应的数据库存储的数据也是增删改查的事务型数据,这些业务系统上主要进行的也是OLTP业务操作,对于企业内部进行数据分析(OLAP分析)或者数据挖掘之类的应用,则需要通过从不同的数据库中进行数据抽取,将数据从不同的数据库中进行周期性同步到数据仓库中,然后在数据仓库中进行统一规范的清洗分析处理,最终结果提供给不同的数据集市和应用。

​​​​​​​3. 数据分析-大数据Lambda架构

最初很多公司构建分析系统对应的数据仓库都是基于关系型数据库之上,例如:MySQL、Oracle数据库,但是随着企业数据量的增长,关系型数据库已经无法支撑海量数据集的存储与分析,这时随着大数据相关技术的兴起,很多企业基于大数据相关技术构建数据分析对应的数据仓库,例如:Hadoop中的HDFS 、Hive。

基于大数据平台构建数据仓库的过程,数据往往都是周期性的从业务系统中同步到大数据平台,完成一系列ETL转换操作后,最终形成报表数据提供给数据集市展示使用,这就是通常我们说的离线数据分析。但是对于一些实时性要求比较高的应用,例如:实时报表系统,则必须有非常低的延时展示统计结果,这就是我们说的实时数据分析。企业中这个时期采用Lambda架构来处理离线数据和实时数据的分析,大数据Lambda架构如下:

Lambda架构在一定程度上解决了不同计算场景问题,但是带来的问题是框架太多导致平台复杂度过高、运维成本高,例如,在这个时期要完成离线计算需要使用Hive、MapReduce离线计算框架,完成实时计算需要使用Storm实时计算框架,对相应的开发和维度带来很高的成本。

后来随着Apache Spark分布式计算框架的出现,Spark可以处理离线数据,同时可以将实时数据作为微批处理来应对实时处理场景,总之,Spark可以让Lambda架构使用一套计算框架完成批处理和实时处理计算,但是Spark本身是基于批数据处理模式处理流式数据,并不能完美高效的处理实时要求非常高的场景。

关于大数据分析架构演变过程中在大数据中除了有Lambda架构之外,还有Kappa架构、混合架构及湖仓一体架构,以上各个架构都是在大数据不同时期针对公司业务数据分析场景提出的,都是解决企业数据分析过程中业务痛点问题的架构,关于其他架构更详细内容可以参照实时数仓相关课程。

​​​​​​​4. 有状态流计算架构

Lambda架构中针对实时数据处理我们可以使用Spark计算框架进行分析,Spark针对实时数据进行分析本质是将实时流数据看成微批进行处理,数据产生的本质是一条条真实的事件,这种处理实际上针对实时流事件分析有一定的延迟,很难在实时计算过程中进行实时计算并直接产生统计结果,因为这需要计算框架满足高性能、高吞吐、低延时等目标。随着有状态流计算架构的提出,从一定程度上满足了企业对实时流数据处理的高性能、高吞吐、低延时目标,企业可以基于实时的流式数据,维护所有计算过程的状态,所谓状态就是计算过程中产生的中间计算结果,每次计算新的数据进入到流式系统中都是基于中间状态结果的基础上进行运算,最终产生正确的统计结果。

基于有状态计算的方式最大的优势是不需要将原始数据重新从外部存储中拿出来,从而进行全量计算,因为这种计算方式的代价可能是非常高的。从另一个角度讲,用户无须通过调度和协调各种批量计算工具,从数据仓库中获取数据统计结果,然后再落地存储,这些操作全部都可以基于流式计算完成,可以极大地减轻系统对其他框架的依赖,减少数据计算过程中的时间损耗以及硬件存储。有状态计算架构如下:

可以看出有状态流计算架构将会逐步成为企业作为构建数据平台的架构模式,Apache Flink就是有状态的流计算架构,通过实现Google Dataflow流式计算模型实现了高吞吐、低延迟、高性能兼具的实时流式计算框架,同时Flink支持高度容错的状态管理,防止状态在计算过程中因为系统异常而出现数据丢失,Flink周期性地通过分布式快照技术Checkpoints实现状态的持久化维护,即使在系统停机或者异常情况下都能正确的计算出来结果。


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

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

相关文章

easyrecovery 16数据恢复软件2024最新免费下载地址

EasyRecovery 16是一款操作简单、功能强大数据恢复软件,通过easyrecovery可以从硬盘、光盘、U盘、数码相机、手机等各种设备中恢复被删除或丢失的文件、图片、音频、视频等数据文件。 EasyRecovery Pro 16安装步骤 一、首先需要在该页找到下载地址处选任意地址将EasyRecovery软…

【C++】POCO学习总结(八):通知Notifications和事件Events

【C】郭老二博文之:C目录 1、Notifications和Events的区别 1)通知Notifications:如果观察者不知道或不关心事件的来源,则使用通知Notifications。 Poco::NotificationCenter或Poco::NotificationQueue位于源source和目标target之…

我是没想到是还可以这样秒出答案 ...

起因 晚上在休闲游戏中,一网友发来信息求问,一道编程题。 咋一看,嘿 2023年1月浙江选考题(信息技术),挺新鲜,那就来看看吧。 聊了一下才知道,这是中考高考(6月28日晚23&…

TikTok如何破解限流?真假限流如何分辨?速来自测

Tiktok是目前增长较快的社交平台,也是中外年轻一代首选的社交平台,许多出海品牌已经看到了TikTok营销的潜力,专注于通过视频、电商入驻来加入TikTok这片蓝海,加深品牌影响力,获得变现。 然而TikTok新手往往都会遇到一…

浏览器插api开发文档

chrome谷歌浏览器开发文档

技术阅读周刊第第7️⃣期

技术阅读周刊,每周更新。 历史更新 20231013:第一期20231022:第二期20231027:第三期20231103:第四期20231107:第五期20231117:第六期 What is a JWT? Understanding JSON Web Tokens URL: http…

CPU虚拟化的过程

VMCS 是Virtual Machine Control Structure。是 Intel 实现 CPU 虚拟化,记录 vCPU 状态的一个关键数据结构。VMCS 数据结构主要包含以下信息。 Guest-state area,即 vCPU 的状态信息,包括 vCPU 的基本运行环境,例如寄存器等。Hos…

git-4

1.在GitHub上创建个人仓库 现在仓库中有LICENSE文件,但本地没有这个文件,该怎么办呢?往下看 2.把本地仓库同步到GitHub 3.不同人修改了不同文件如何处理? 两个人在同一个分支上,两个人修改了不同文件 其中一人&…

11月第4周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年11月20日-11月26日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营…

【LeetCode:907. 子数组的最小值之和 | 贡献法 乘法原理 单调栈】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Spark将execl表格文件导入到mysql中

实现代码 excel所需的pom依赖 案例实现 实现代码 package excel_mysqlimport org.apache.spark.sql.SparkSession import java.util.Propertiesobject t1 {def main(args: Array[String]): Unit {val spark SparkSession.builder().appName("ExcelToMySQL") /…

力扣347. 前 K 个高频元素(java,最小堆,快速排序法)

Problem: 347. 前 K 个高频元素 文章目录 前言题目描述思路解题方法复杂度Code 前言 对于求取Top K一般有如下两种题型: 1.针对静态数据(查询TopK操作) 2.针对动态数据(包括添加数据操作和查询TOPK操作) 一般解决思路…

【数据结构】八大排序 (三)

目录 前言: 快速排序 快速排序非递归实现 快速排序特性总结 归并排序 归并排序的代码实现 归并排序的特性总结 计数排序 计数排序的代码实现 计数排序的特性总结 前言: 前文快速排序采用了递归实现,而递归会开辟函数栈帧&#xff0…

Echarts大屏-数据可视化

使用原生htmljavascript实现大屏展示,较为麻烦的为边框的四个小角使用伪元素生成,其余echarts使用如下快速上手 - Handbook - Apache ECharts 效果如下:

Docker、Kubernetes、OCI、CRI-O、containerd、runc 之间的关系以及它们是如何一起工作的?

最近网上看到一张图片,能够很清晰地展现出 Docker、Kubernetes、OCI、CRI-O、containerd、runc 之间的关系以及它们是如何在一起工作的,如下: 本文可以作为之前一篇文章(《K8s、Docker、CRI、OCI 之间的爱恨情仇》)的…

最新消息:滴滴 P0 事故原因,原因出来了

最新消息滴滴P0故障原因,是由于k8s集群升级导致的,后面又进行版本回退,由于现在大型互联网公司基本都是基于K8s进行部署的,如果K8s集群一出问题,上面运行的业务Pod和运维系统全部都得宕机,导致没法回滚。 …

算法通关村-----超大规模数据场景的问题

对20GB文件进行排序 问题描述 假设有一个20GB的文件,每行一个字符串,请说明如何对这个文件进行排序 问题分析 20GB的文件很难一次加载到内存中,可以采用分块策略,先使块内有序,在使块间有序。 实现思路 按照给定…

python安装PyHook3

pyhook 报错 “TypeError: KeyboardSwitch() missing 8 required positional arguments: ‘msg’, ‘vk_code’, ‘scan_code’, ‘ascii’, ‘flags’, ‘time’, ‘hwnd’, and ‘win_name’” 一、PyHook3简介 pyHook包为Windows中的全局鼠标和键盘事件提供回调。Python应…

Ubuntu上的常用软件配置

《立冬》——李白 〔唐代〕 冻笔新诗懒写,寒炉美酒时温。 醉看墨花月白,恍疑雪满前村。 对于Android开发者而言,折腾Android源码那是其乐无穷啊。但是有时候在Linux系统下会很不方便,这里特此记录一下常用的软件配置,希…

NX二次开发UF_CURVE_create_isocline 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_isocline Defined in: uf_curve.h int UF_CURVE_create_isocline(int face_cnt, tag_t faces [ ] , double direction [ 3 ] , const char * start_angle, const ch…