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.rhkb.cn/news/375854.html

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

相关文章

5.SpringBoot核心源码-启动类源码分析

目录 概述技巧spring boot 如何启动应用程序run方法里面核心逻辑 SpringApplicaiton.run(xxx.class,args)结束 概述 SpringBoot核心源码-启动类源码分析 技巧 如何给外部源码加注释,想要在源码中添加自己的注释,会弹出 file is read only,代…

【多媒体】Java实现MP4和MP3音视频播放器【JavaFX】【更多功能的播放器】【音视频播放】

在Java中播放视频可以使用多种方案,最常见的是通过Swing组件JFrame和JLabel来嵌入JMF(Java Media Framework)或Xuggler。不过,JMF已经不再被推荐使用,而Xuggler是基于DirectX的,不适用于跨平台。而且上述方案都需要使用第三方库。…

GD32MCU最小系统构成条件

大家是否有这个疑惑:大学课程学习51的时候,老师告诉我们51的最小系统构成?那么进入32位单片机时代,gd32最小系统构成又是怎么样的呢? 1.供电电路 需要确保供电的电压电流稳定,以东方红开发版为例&#xff…

WPF界面设计-更改按钮样式 自定义字体图标

一、下载图标文件 iconfont-阿里巴巴矢量图标库 二、xaml界面代码编辑 文件结构 &#xe653; 对应的图标代码 Fonts/#iconfont 对应文件位置 <Window.Resources><ControlTemplate TargetType"Button" x:Key"CloseButtonTemplate"…

浏览器输入URL后的过程

总体流程&#xff1a; 1. 用户输入URL并按下回车 当用户在浏览器的地址栏中输入一个 URL 并按下回车&#xff0c;浏览器开始解析用户输入并判断这是一个合法的 URL。 2. DNS 解析 缓存查找&#xff1a;浏览器首先查看本地 DNS 缓存中是否有对应的 IP&#xff0c;如果有则直接…

AI人工智能作词,为音乐注入未来之力

在当今的音乐世界中&#xff0c;创新的力量不断推动着边界的拓展&#xff0c;而人工智能作词正以其独特的魅力&#xff0c;成为引领音乐走向未来的强大动力。 “妙笔生词智能写歌词软件&#xff08;veve522&#xff09;”无疑是这股浪潮中的璀璨明星。它利用先进的人工智能技术…

【Golang】map的使用

map声明的方式 //声明var m map[string]string//在使用map之前&#xff0c;先make&#xff0c;make的作用就是给map分配空间m make(map[string]string)m["lover"] "Yzx"m["friend1"] "Zxw"m["friend2"] "Zzc"…

快速测试electron环境是否安装成功

快速测试electron环境是否安装成功 测试代码正确运行的效果运行错误的效果v22.4.1 版本无法使用v20.15.1版本无法使用v18.20.4 版本无法使用 终极解决办法 测试代码 1.npx create-electron-app my-electron-app 2.cd my-electron-app 3.npm start 正确运行的效果 环境没问题…

47、lvs之DR

1、DR模式&#xff1a; 1.1、lvs三种模式&#xff1a; nat 地址转换 DR 直接路由模式 tun 隧道模式 1.2、DR模式的特点&#xff1a; 调度器在整个lvs集群当中是最重要的&#xff0c;在nat模式下&#xff0c;即负载接收请求&#xff0c;同时根据负载均衡的算法转发流量&…

智能家居装修怎么布线?智能家居网络与开关插座布置

打造全屋智能家居。计划的智能家居方案以米家系列为主&#xff0c;智能家居联网方案以无线为主。装修前为了装备智能家居做了很多准备工作&#xff0c;本文深圳侨杰智能分享一个智能家居装修和布线方面的心得与实战知识。希望能对大家的装修有所帮助。 ​1.关于网络 如果房子比…

C语言中字符串(字符数组)中含有 0x00 (‘\0‘)引发的问题和解决办法

问题 在C语言中&#xff0c;字符串是以空字符&#xff08;null character&#xff0c;即\0或0x00&#xff09;结尾的字符数组。这种设计意味着字符串中的任何 0x00 字符都会被解释为字符串的结束。因此&#xff0c;如果字符串内部包含0x00字符&#xff0c;这实际上会将字符串分…

【每日一练】python类和对象现实举例详细讲解

""" 本节课程目的&#xff1a; 1.掌握类描述现实世界实物思想 2.掌握类和对象的关系 3.理解什么事面向对象 """ #比如设计一个闹钟&#xff0c;在这里就新建一个类 class Clock:idNone #闹钟的序列号&#xff0c;也就是类的属性priceNone #闹…

Web开发 —— 放大镜效果(HTML、CSS、JavaScript)

目录 一、需求描述 二、实现效果 三、完整代码 四、实现过程 1、HTML 页面结构 2、CSS 元素样式 3、JavaScript动态控制 &#xff08;1&#xff09;获取元素 &#xff08;2&#xff09;控制大图和遮罩层的显隐性 &#xff08;3&#xff09;遮罩层跟随鼠标移动 &…

golang 项目打包部署环境变量设置

最近将 golang 项目打包部署在不同环境&#xff0c;总结一下自己的心得体会&#xff0c;供大家参考。 1、首先要明确自己目标服务器的系统类型(例如 windows 或者Linux) &#xff0c;如果是Linux 还需要注意目标服务器的CPU架构(amd或者arm) 目标服务器的CPU架构可执行命令&…

Vue.js学习笔记(五)抽奖组件封装——转盘抽奖

基于VUE2转盘组件的开发 文章目录 基于VUE2转盘组件的开发前言一、开发步骤1.组件布局2.布局样式3.数据准备 二、最后效果总结 前言 因为之前的转盘功能是图片做的&#xff0c;每次活动更新都要重做UI和前端&#xff0c;为了解决这一问题进行动态配置转盘组件开发&#xff0c;…

如何更好地理解递归算法?Python实例详解

递归确实是一种较为抽象的数学逻辑&#xff0c;可以简单的理解为程序调用自身的算法。 维基百科对递归的解释是&#xff1a; 递归&#xff08;英语&#xff1a;Recursion&#xff09;&#xff0c;又译为递回&#xff0c;在数学与计算机科学中&#xff0c;是指在函数的定义中使…

pbootCMS 数据库sqlite转mysql数据库

前言 pbootCMS默认使用 sqlite数据库 &#xff0c;那么什么是sqlite数据库呢&#xff1f; SQLite&#xff0c;是一款轻型的数据库&#xff0c;是遵守ACID的关系型数据库管理系统&#xff0c;它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌…

【大模型LLM面试合集】大语言模型架构_MoE论文

1.MoE论文 参考文章&#xff1a; Mixture of Experts-IntroductionUnderstanding the Mixture-of-Experts Model in Deep Learning 论文相关&#xff1a; 论文名称&#xff1a;Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer论文地址&a…

Kafka(三)Producer第二篇

一&#xff0c;生产者架构 生产者客户端由两个线程协调运行&#xff0c;分别为主线程和Sender线程&#xff08;发送线程&#xff09;。 主线程&#xff1a;KafkaProducer创建消息&#xff0c;通过拦截器、序列化器和分区器之后缓存到消息收集器RecordAccumulator中&#xff1b;…

jmeter-beanshell学习6-beanshell生成测试报告

前面写了各种准备工作&#xff0c;内容组合用起来&#xff0c;应该能做自动化了&#xff0c;最后一步&#xff0c;生成一个报告&#xff0c;报告格式还是csv 报告生成的路径和文件&#xff0c;在用户参数写好&#xff0c;防止以后改路径或者名字&#xff0c;要去代码里面改。以…