Apache Flink核心特性应用场景

Flink的定义
  • Apache Flink是一个分布式处理引擎,用于处理 无边界数据流, 有边界数据流上金秀贤有状态的计算。Flink能在所有常见的集群环境中运行,并能以内存速度和任意规模进行计算
  • 如下Flink官网的一张图
    在这里插入图片描述
Flink 与Spark的区别
  • Flink 中处理所有事件都可以看成是流事件,批数据可以看成是一种特殊的流数据,即有边界数据流
  • Spark计算框架则相反,Spark中批处理是基本操作,流处理可以划分为一小批一小批数据进行微批处理,以此达到实时的效果
无界流 & 有界流
  • 无界流:有定义流的开始,但是没有定义流的结果,他会无休止的产生数据,无界流的数据必须持续处理,即数据被社区后要立刻处理掉。不可能等所有数据到达后在一次性批处理,因为输入是无限的,任何时候都不会完成,比如用户行为数据
  • 有界流:有定义流的开始,也有定义流的结束。有界流可以在的到所有数据之后在统一处理计算。有界流所有数据可以被排序,所以并不需要有序的获取,有界流通畅被称为批处理。
数据架构演变
业务处理-单体架构

在这里插入图片描述

  • 传统单体架构,初期效率高,后期业务多了,系统复杂庞大,越来越难维护,并且不同业务系统之间可能有一些共同模块,做不到复用。因此演化出微服务
业务处理-微服务架构

在这里插入图片描述

  • 每一个服务都拆解成不同模块单独部署,独立存储,利用RestApi通讯
  • 微服务架构存储上缺点:要做OLAP业务操作的时候,我们需要对企业内部进行数据分析(OLAP)或者数据挖掘之类的应用,需要从n多个不同微服务的DB里面抽数据,将不同数据周期性同步到仓库统一清洗分析处理,最终给结果提供给不同的数据集市场和应用
数据分析-大数据Lambda架构

在这里插入图片描述

  • 离线数据处理:基于大数据平台构建数据仓库的过程,数据一般周期性同步到大数据平台,完成一系列ETL转换操作后,最终形成数据提供给数据集市展示使用,这就是通常说的离线数分析
  • 实时数据处理:对于事实数据处理,例如报表要求是实时性高,必须有非常低的延时统计结果,这就是我们说的事实数据分析
  • Lambda 架构缺点:框架太多导致平台复杂性高,运维成本高,例如离线计算用Hive,MapReduce离线计算框架,事实计算需要使用Storm,对应用开发者和运维来说成本很高。
有状态流计算架构

在这里插入图片描述

  • 基于有状态计算的方式最大的优势是不需要将原市数据重新从外部存储拿出来,从而进行全量计算。例如数据流中的数据都对A进行操作,每一条数据进入操作后都存储中间状态K,之后的操作都以为K为基础计算,结果赋值给K,利用动态规划的思想完成流式计算。K可以存储在内存
  • Apache Flink就是有状态流计算框架,通过实现Google DataFlow 流式计算模型实现了高吞吐,低延迟,高性能兼具的事实计算框架,同Flink 海支持高度容错状态管理,防止异常情况的数据丢失。Flink通过分布式快照技术CheckPoint 实现状态持久化维护即使在系统停机或者异常情况最终也能计算出结果
Flink 核心特性
流批一体化
  • Flink可以在底层用同样数据抽象和计算模型来进行批处理和流处理。也就是我们定义一套POJO对象,以及POJO对象的计算逻辑,同时应用在批处理和流处理上。这样Flink能帮我们去掉各种流处理,批处理框架,大大降低了架构设计,开发,运维复杂度,可以节省大量人力成本。
同时支持高吞吐,低延迟,高性能
  • Apache Spark也只能兼顾高吞吐 和 高性能特性,主要因为在SparkStreaming流式计算中无 法做到低延迟保障
  • Apache Storm 只能支持低延迟 和 高性能,但是无法满足高吞吐
  • Apache Flink 是唯一能支持 高吞吐,低延迟,高性能三个目标的流式计算框架。
支持事件时间(Event Time)概念
  • 流式计算中窗口计算的功能非常重要,大多数框架窗口计算实现用的是系统的时间(Process Time),也就是事件传输到计算框架处理的时间。
  • Flink 能支持基于事件时间(Event Time) 语义进行窗口计算,也就是使用事件产生的时间。这种机制使的即使是乱序到达的事件,流系统也能计算出精确结果,比如给A数据改状态,我们就必须按顺序来计算,利用滑动窗口,一个窗口内的数据安EventTime排序来做流式计算,避免了硬件,网络带来的影响
支持有状态计算
  • Flink在1.4版本实现状态管理,就是流式计算的过程中将中间结果数据保存在内存或者文件系统中,等下一个事件到来后可以从之前的状态中获取中间结果,从而做到无需每次都基于全部数据统计结果来进行计算,极大提升系统性能。
支持高度灵活的窗口(Window)操作
  • 流处理中,数据大多不连续,要通过窗口对一定时间范围内数据进行聚合
  • 例如统计过去1分钟多少用户点击网页,我们可以不同维护划分窗口:基于Time,Count,Session,以及Data-driven等类型的窗口操作。可以定义不同窗口出触发机制来满足不同的需求
基于轻量级分布式快照(Snapshot)实现容错
  • Flink能分布式运行在上千个节点上,将一个大型计算任务流程拆开成小的计算过程,然后将task粉不到并行节点上进行处理。
  • 在任务执行过程中,能够自动发现事件处理过程中的错误而导致数 据不一致的问题,比如:节点宕机、网路传输问题,或是由于用户因为升级或修复问题而导致计算服 务重启等。在这些情况下,通过基于分布式快照技术的Checkpoints,将执行过程中的状态信息进行 持久化存储,一旦任务出现异常停止,Flink就能够从Checkpoints中进行任务的自动恢复,以确保 数据在处理过程中的一致性(Exactly-Once)。
基于JVM实现独立的内存管理
  • Flink实现了自身管理内存的机制,尽可能减少JVM GC对系统的影响
  • Flink 通过序列化/反序列化方法将所有数据对象转换成二进制在内存中存储,降低数据存储大小同时,能更加有效的对内存空间进行利用,降低GC带来的性能下降或者任务异常的风险,因此Flink更稳定
Save Point(保存点)
  • 对于7*24小时运行的流式计算应用,数据源源不断,一段时间内应用重启可能导致数丢失或者计算结果异常。例如进行集群版本升级等停机维护。
  • Flink通过SavePints机制,将执行任务快照保存到存储中。任务重启的时候,可以直接从事先保存的SavePoints回复原有的计算状态,使得任务继续按照停机之前的状态运行,SavePoints技术让用户更好管理流式应用
多层级API
  • Flink提供多个层级API,用户可以根据自己表达力和易用性的需求来选择,不同API层级可以混用以实现复杂的业务逻辑。
Flink 应用场景
实时智能推荐
  • 根据用户历史行为,通过智能推荐算法训练模型,预测用户未来可能做的事件。
复杂事件处理
  • 复杂事件处理意义在于,我们需要从多个行为事件触发后的到一个异常的事件结果,也就是当发生了A,B,C,D的时候,我们得出结论E,根据E来做决策,通常这种事件的实时性要求高,我们可以应用Flink SQL进行事件数据的转换
实时欺诈检测
  • 金融领域业务,出现各种类型欺诈,例如信用卡盗刷欺诈,贷款申请等,这种以前都需要按小时计算来的的到的数据分析结论显然是无法阻止事件的发生,
  • 运用Flink流式计算技术能在几毫秒内完成对欺诈判断,实时对交易流水进行规则判断或者模型预测,这样一旦出现交易存在欺诈,则直接拦截,避免因处理不及时导致经济损失
实时数仓库与ETL
  • 对流式数据进行实时清洗,归并,结构化处理,为离线数仓进行补充和优化
流数据分析
  • 实时计算各类数据指标,并利用实时结果及时调整在线系统相关策略,在各类内容投放、无线智能推 送领域有大量的应用。流式计算技术将数据分析场景实时化,帮助企业做到实时化分析Web应用或 者App应用的各项指标,包括App版本分布情况、Crash检测和分布等,同时提供多维度用户行为分 析,支持日志自主分析,助力开发者实现基于大数据技术的精细化运营、提升产品质量和体验、增强 用户黏性。
实时报表分析
  • 实时报表是很多公司采用的报表统计方案之一,其中最主要的应用便是实时大屏展示。利 用流式计算实时得出的结果直接被推送到前端应用,实时显示出重要指标的变换情况。最典型的案例 便是淘宝的双十一活动的成交额
Flink 用户

在这里插入图片描述

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

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

相关文章

keep-alive缓存组件

keep-alive缓存组件是Vue.js中的一个特殊组件&#xff0c;主要用于缓存内部组件的数据状态&#xff0c;以提高应用的性能和用户体验。以下是关于keep-alive缓存组件的详细解析&#xff1a; 一、作用 缓存组件状态&#xff1a;当组件在<keep-alive>内部切换时&#xff0…

白盒测试的概念、特点、应用阶段、实施流程、现状与前景

文章目录 前言一、白盒测试的应用阶段二、白盒测试的特点三、白盒测试的流程四、白盒测试的现状与前景总结 前言 白盒测试&#xff08;White Box Testing&#xff09;&#xff0c;又称为结构测试&#xff08;Structural Testing&#xff09;、透明盒测试&#xff08;Glass Box…

Riscv 调试系统的合规测试

Riscv debug release框图 仿真环境下的Riscv debug框图 平头哥调试环境 XuanTie DebugServer是一个调试代理软件&#xff0c;它通过CKLINK&#xff0c;以JTAG的方式连接目标板&#xff0c;并支持“GDB Remote Protocol” 。开发者可以通过GDB对运行在玄铁800系列和玄铁900系列处…

24.可乐机拓展练习--综合训练

&#xff08;1&#xff09;设计要求&#xff1a;仍以可乐机为背景&#xff0c;一瓶可乐的价格是2.5 元&#xff0c;用按键控制投币&#xff08;加入按键消抖功能&#xff09;&#xff0c;可以投 0.5 元硬币和 1元硬币&#xff0c;投入 0.5 元后亮一个灯&#xff0c;投入 1元后亮…

从微软 Word 中提取数据

从 Microsoft Word 文档中提取数据可以通过编程来实现&#xff0c;有几种常见的方法&#xff0c;其中之一是使用 Python 和 python-docx 库。python-docx 是一个处理 .docx 文件&#xff08;Microsoft Word 文档&#xff09;的 Python 库&#xff0c;可以读取和操作 Word 文档的…

语雀平替,一款私有化功能丰富的开源知识库系统

背景介绍 现代企业面临的文档管理挑战日益严峻&#xff0c;包括信息冗余&#xff0c;存在多份数据&#xff0c;难以做到统一 &#xff0c;文档数量激增&#xff0c;查找麻烦&#xff0c;知识的信息安全问题频发以及团队协作需求不断上升。同时&#xff0c;随着知识管理在企业运…

洞察插槽和 v-slot:组件插槽案例的分类解读

目录 插槽和v-slot介绍 组件插槽 默认插槽 具名插槽 条件插槽 动态插槽 作用域插槽 插槽和v-slot介绍 Vue插槽(Slot)是Vue.js框架中用于实现组件间内容传递和模板通信的一种机制。通过插槽,父组件可以向子组件的指定位置插入HTML结构或内容,从而实现更灵活和…

华为HCIP Datacom H12-821 卷31

1、PBR&#xff08;Policy-Based-Route&#xff09;可以执行以下哪些操作 A、修改匹配数据包的LSP B、修改匹配流量的下一跳地址 C、修改匹配流量的出接口 D、修改匹配流量的Qos信息 正确答案&#xff1a; A,B,C,D 解析&#xff1a;PBR可以设置本地路由策略动作&#x…

文章SameStr(二):图2代码

title: “Publication Figure 2” 百度云盘链接: https://pan.baidu.com/s/15g7caZp354zIWktpnWzWhQ 提取码: 4sh7 Libraries Standard Import library(tidyverse) library(cowplot) library(scales) library(ggpubr)Special library(lme4) library(sjPlot) library(sjst…

根据https链接点击按钮下载文件

filePreview(row) {fetch(row.attachmentContent.url).then(res >res.blob().then(blob > {var a document.createElement(a);var url window.URL.createObjectURL(blob);var name row.attachmentContent.name;a.href url;a.download name; // 下载名称a.click();wi…

数据仓库之命名规范

数据仓库命名规范旨在确保数据仓库中的各种对象&#xff08;如数据库、表、列、索引、视图等&#xff09;具有一致、清晰且有意义的名称。这些规范有助于提高数据的可读性、可维护性和可理解性。以下是一些常见的数据仓库命名规范&#xff0c;涵盖了数据库对象的各个方面。 一…

基于Java中的SSM框架实现学生网上请假系统项目【项目源码+论文说明】计算机毕业设计

摘要 本学生网上请假系统是针对目前学生网上请假系统的实际需求&#xff0c;从实际工作出发&#xff0c;对过去的学生网上请假系统存在的问题进行分析&#xff0c;结合计算机系统的结构、概念、模型、原理、方法&#xff0c;在计算机各种优势的情况下&#xff0c;采用目前最流…

大文件切片上传 So Easy?分享 1 段优质 JS 代码片段!

本内容首发于工粽号&#xff1a;程序员大澈&#xff0c;每日分享一段优质代码片段&#xff0c;欢迎关注和投稿&#xff01; 大家好&#xff0c;我是大澈&#xff01; 本文约 1100 字&#xff0c;整篇阅读约需 2 分钟。 大文件切片上传&#xff0c;我一般会分为4步来搞&#xf…

liosam编译问题

编译过程 因为lego安装时已经安装了gtsam因子图优化库,所以不需要再安装 直接编译即可 catkin_make -j8 报错实例 示例:[lio_sam_imuPreintegration-2] process has died,[lio_sam_mapOptmization-5] process has died 解决方法 实际问题是库文件libmetis.so 的位置。…

数据结构与算法:顺序表和链表

目录 一、线性表 二、顺序表 三、链表 一、线性表 线性表&#xff08; linear list &#xff09;是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线…

MyBatis框架学习笔记(一):MyBatis入门

1 MyBatis 介绍 1.1 官方文档 MyBatis 中文手册&#xff1a; &#xff08;1&#xff09;https://mybatis.org/mybatis-3/zh/index.html &#xff08;2&#xff09;https://mybatis.net.cn/ Maven 仓库&#xff1a; https://mvnrepository.com/ 仓库作用&#xff1a;需要…

(三)前端javascript中的数据结构之集合

集合的特点 1.无序 2.唯一性 3.不可重复 集合相对于前面几种数据结构&#xff0c;比较简单好理解&#xff0c;看看代码实现就能知道他的用法了 集合的创建 function MySet() {this.item {}; } MySet.prototype.has function (value) {return value in this.item; };//增 M…

编程范式之函数式编程

目录 前言1. 函数式编程的定义2. 函数式编程的特点2.1 纯函数2.2 不可变性2.3 高阶函数2.4 惰性求值 3. 函数式编程的应用场景3.1 并行计算3.2 数据分析3.3 Web开发 4. 函数式编程的优缺点4.1 优点4.2 缺点 5. 代表性的编程语言5.1 Haskell5.2 Scala5.3 Clojure 6. 示例代码结语…

Java中常见的消息中间件有哪些,各自的优缺点是那些?

1、ActiveMQ 优点&#xff1a; Apache基金会开发的开源消息中间件&#xff0c;支持JMS规范。 提供多种集群模式和高可用机制。 易于使用&#xff0c;并且与多种编程语言交互良好。 缺点&#xff1a; 在处理大量消息和并发连接时&#xff0c;性能可能不如其他中间件。 对于大型…

状态模式在金融业务中的应用及其框架实现

引言 状态模式&#xff08;State Pattern&#xff09;是一种行为设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式通过将状态的相关行为分离到独立的状态类中&#xff0c;使得状态转换更加明确和简洁。在金融业务中&#xff0c;状态模式可以用于实现交易状…