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

🏡 个人主页: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.mzph.cn/news/183849.shtml

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

相关文章

promis.all的异步使用

基础 参考 https://blog.csdn.net/qq_52855464/article/details/125376557 简单来说 Promise.all是处理接口返回方法异步的,能够使得接口的获取顺序得到控制,不会出现数据为空的情况 使用 先执行jianshigetGroups->groupIds-> const promises2 …

docker搭建rabbit集群

1.去rabbitMQ官网拉去images 我当前使用的是最新版本的镜像:rabbitmq:3.12-management 2.创建一个集群专用网络 docker的容器相互隔离是不可通信的,我们自行创建一个网络后,创建容器时 给他们放在一起,就可以通信了。 docker netw…

【LabVIEW学习】3.labview制作安装程序

一。生成exe文件 1.创建可执行文件 (1)创建项目 注意: 1.创建.exe文件,这个文件在labview环境下才可以运行,如果直接传递给其他电脑(没有labview环境),他是不可以运行的。 2.如果已…

创建SpringBoot流程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、操作步骤总结 前言 我使用的是jdk1.8版本的,idea社区版的(专业版的应该也差不多吧) 提示…

华清远见嵌入式学习——C++——作业2

作业要求&#xff1a; 代码&#xff1a; #include <iostream>using namespace std;class Rect { private:int width;int height;public:void init(int w,int h);void set_w(int w);void set_h(int h);void show(); };void Rect::init(int w,int h) {width w;height h;…

记一次:Python的学习笔记一

前言&#xff1a;之前学习的Python笔记&#xff0c;已经过去很多年了&#xff0c;不久前重新翻了出来练习练习。不完善的地方在缝缝补补 一、环境搭建 1.1、Python的win环境安装 0、python-3.12.0软件安装&#xff1a;Win11环境搭建python-3.12.0-amd64 这里小小注意一下&a…

vuepress-----3、导航栏

3、导航栏 # 页面目录结构约定 . ├── docs │ ├── .vuepress (可选的) │ │ ├── components (可选的) │ │ ├── theme (可选的) │ │ │ └── Layout.vue │ │ ├── public (可选的) │ │ ├── styles (可选的) │ │ │…

身份证mod11-2校验规则

这几天碰到一个需求是实现身份证最后一位的校验&#xff0c;需求文档里面写了个公式&#xff0c;没看懂&#xff08;数学早就还给老师了&#xff09;&#xff0c;于是各种查资料&#xff0c;发现网上的资料要么只给了说明&#xff0c;要么给了个固定的代码&#xff0c;但是写的…

怎样将Halcon导出的数据显示在textBox中

其中textBox1是文本框的名字&#xff0c;hv_Row时一个数组&#xff0c;.D.我的理解是DATA,即数据的意思&#xff0c;“0.00”是显示的数值保留两位小数点的意思。

数据库系统概述之数据库优化

为什么需要进行优化&#xff1f; 数据库性能瓶颈 数据库服务器的性能受许多因素影响&#xff0c;包括硬件能力、系统规模、业务模型及架构、代码设计、数据库表设计、系统环境等。 因此&#xff0c;可以从几个方面进行数据库优化 喜欢点赞收藏&#xff0c;如有疑问&#xff…

RabbitMQ快速学习之WorkQueues模型、三种交换机、消息转换器(基于SpringBoot)

文章目录 前言一、WorkQueues模型消息发送消息接收能者多劳 二、交换机类型1.Fanout交换机消息发送消息接收 2.Direct交换机消息接收消息发送 3.Topic交换机消息发送消息接收 三、编程式声明队列和交换机fanout示例direct示例基于注解 四、消息转换器总结 前言 WorkQueues模型…

关键词挖掘软件-免费批量挖掘关键词的工具

在当今数字化时代&#xff0c;网站的曝光和排名对于吸引流量至关重要。而在这个大数据的背后&#xff0c;SEO&#xff08;Search Engine Optimization&#xff0c;搜索引擎优化&#xff09;成为许多网站主和创作者们追逐的关键。在SEO的世界里&#xff0c;关键词的选择和优化是…

spring security 艰苦学习中

一、初次感知 1.jwt工具类 密钥secret 有点意思。 2.PasswordEncoder 对密码进行加密&#xff0c;在配置类中返回bean. 下面这个关于加密和解密的东西是有误导性的。

用customize-cra+react-app-rewired配置less+css module

1. 安装 npm i less less-loader -D npm i customize-cra-less-loader -D2.添加配置项 //config-overrides.js const { override } require(customize-cra); const addLessLoader require("customize-cra-less-loader");module.exports {webpack: override(addL…

锚索测力计与振弦采集仪组成桥梁安全监测

锚索测力计与振弦采集仪组成桥梁安全监测 在桥梁工程中&#xff0c;安全监测一直是一个重要的方面。桥梁安全监测可以及时发现桥梁的变形、裂缝、位移等问题&#xff0c;为及时修复或维修提供重要的依据。而锚索测力计和振弦采集仪作为桥梁安全监测的两个主要工具&#xff0c;…

内衣洗衣机和手洗哪个干净?内衣洗衣机便宜好用的牌子推荐

单纯的用手清洗内衣&#xff0c;是很难的清洁到内衣物上的每一个角落的污渍。另外&#xff0c;手洗时所用的水以及香皂并不能彻底杀死衣物上的细菌&#xff0c;反而会在内衣物上滋生细菌。长时间穿这种内衣&#xff0c;对身体有潜在的危害。相比较而言&#xff0c;专用的内衣洗…

Flutter加固原理及加密处理

​ 引言 为了保护Flutter应用免受潜在的漏洞和攻击威胁&#xff0c;加固是必不可少的措施之一。Flutter加固原理主要包括代码混淆、数据加密、安全存储、反调试与反分析、动态加载和安全通信等多个方面。通过综合运用这些措施&#xff0c;可以提高Flutter应用的安全性&#xf…

LeetCode(36)旋转图像【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 48. 旋转图像 1.题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在** 原地** 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 …

日志监控(确保日志在你这台计算机上面)

如果你希望在Linux上面实时监控日志文件的变化并动态刷新&#xff0c;可以考虑使用一些外部工具&#xff0c;如 tail 命令&#xff1a; tail -f your_log_file.logWindows可以使用Notepad&#xff1a;

jdk动态代理和CGLIBE代理

静态代理&#xff1a;由程序员创建或特定工具自动生成源代码&#xff0c;再对其编译。在程序运行前&#xff0c;代理类的.class文件就已经存在了。 动态代理&#xff1a;在程序运行时&#xff0c;运用反射机制动态创建而成。 使用jdk的反射机制&#xff0c;创建对象的能力&…