为什么选择 Flink 做实时处理

这篇具有很好参考价值的文章主要介绍了为什么选择 Flink 做实时处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

优质博文:IT-BLOG-CN

为什么选择 Flink

【1】流数据更真实地反映了我们的生活方式(实时聊天);
【2】传统的数据架构是基于有限数据集的(Spark 是基于微批次数据处理);
【3】我们的目标:低延迟、高吞吐(分布式架构,可能会出现顺序上的混乱,比如统计1个小时内,可能在1小时的时候,可能有的数据还在处理,会延迟到达几毫秒,这个可以通过设置来规避)、结果的准确性和良好的容错性;

哪些行业需要处理流数据(任选一个进行创业吧)

【1】电商和市场营销: 数据报表、广告投放、业务流程需要。例如:实时智能推荐 利用Flink流计算帮助用户构建更加实时的智能推荐系统,帮助企业提升销售额,创造更大的商业价值;
【2】物联网(IOT): 传感器实时数据采集和显示、实时报警,交通运输业 复杂事件处理 对于复杂事件处理,比较常见的案例主要集中于工业领域,例如对车载传感器、机械设备等实时故障检测,这些业务类型通常数据量都非常大,且对数据处理的时效性要求非常高。通过利用Flink提供的CEP(复杂事件处理)进行事件模式的抽取,同时应用Flink的Sql进行事件数据的转换,在流式系统中构建实时规则引擎,一旦事件触发报警规则,便立即将告警结果传输至下游通知系统,从而实现对设备故障快速预警监测,车辆状态监控等目的;
【3】电信业: 基站流量调配;
【4】银行和金融业: 实时结算和通知推送,实时检测异常行为(不用再到晚上进行才进行批处理计算)。实时欺诈检测 在金融领域的业务中,常常出现各种类型的欺诈行为,例如信用卡欺诈、信贷申请欺诈等,而如何保证用户和公司的资金安全,是来近年来许多金融公司及银行共同面对的挑战。随着不法分子欺诈手段的不断升级,传统的反欺诈手段已经不足以解决目前所面临的问题。以往可能需要几个小时才能通过交易数据计算出用户的行为指标,然后通过规则判别出具有欺诈行为嫌疑的用户,再进行案件调查处理,在这种情况下资金可能早已被不法分子转移,从而给企业和用户造成大量的经济损失。而运用Flink流式计算技术能够在毫秒内就完成对欺诈判断行为指标的计算,然后实时对交易流水进行规则判断或者模型预测,这样一旦检测出交易中存在欺诈嫌疑,则直接对交易进行实时拦截,避免因为处理不及时而导致的经济损失;实时数仓与ETL
结合离线数仓,通过利用流计算诸多优势和SQL灵活的加工能力,对流式数据进行实时清洗、归并、结构化处理,为离线数仓进行补充和优化。另一方面结合实时数据ETL处理能力,利用有状态流式计算技术,可以尽可能降低企业由于在离线数据计算过程中调度逻辑的复杂度,高效快速地处理企业需要的统计结果,帮助企业更好地应用实时数据所分析出来的结果。
【5】流数据分析: 实时计算各类数据指标,并利用实时结果及时调整在线系统相关策略,在各类内容投放、无线智能推送领域有大量的应用。流式计算技术将数据分析场景实时化,帮助企业做到实时化分析Web应用或者App应用的各项指标,包括App版本分布情况、Crash检测和分布等,同时提供多维度用户行为分析,支持日志自主分析,助力开发者实现基于大数据技术的精细化运营、提升产品质量和体验、增强用户黏性。
【6】实时报表分析: 实时报表分析是近年来很多公司采用的报表统计方案之一,其中最主要的应用便是实时大屏展示。利用流式计算实时得出的结果直接被推送到前端应用,实时显示出重要指标的变换情况。最典型的案例便是淘宝的双十一活动,每年双十一购物节,除疯狂购物外,最引人注目的就是天猫双十一大屏不停跳跃的成交总额。在整个计算链路中包括从天猫交易下单购买到数据采集、数据计算、数据校验,最终落到双十一大屏上展现的全链路时间压缩在5秒以内,顶峰计算性能高达数三十万笔订单/秒,通过多条链路流计算备份确保万无一失。而在其他行业,企业也在构建自己的实时报表系统,让企业能够依托于自身的业务数据,快速提取出更多的数据价值,从而更好地服务于企业运行过程中。

传统数据处理架构

企业刚开始主要进行事务处理:CRM 产生事件——在 Order 中进行逻辑处理——最终反馈给Click,数据都是通过关系型数据库获取,那么当对数据进行统计时,数据量大的时候就会遇到瓶颈。OLTP 特点是快速响应。缺点是数据量大时不易扩展。

微服务架构: 微服务架构将系统拆解成不同的独立服务模块,每个模块分别使用各自独立的数据库,这种模式解决了业务系统拓展的问题,但是也带来了新的问题,那就是业务交易数据过于分散在不同的系统中,很难将数据进行集中化管理,对于企业内部进行数据分析或者数据挖掘之类的应用,则需要通过从不同的数据库中进行数据抽取,将数据从数据库或业务系统中周期性地同步到数据仓库中,然后在数据仓库中进行数据的抽取、转换、加载(ETL),从而构建成不同的数据集市和应用,提供给业务系统使用。但是对于一些时间要求比较高的应用,例如实时报表统计,则必须有非常低的延时展示统计结果,为此业界提出一套 Lambda架构方案来处理不同类型的数据。

为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

分析处理: 将数据从业务数据库复制到数仓,再进行分析和查询。OLAP 特点是对大数据的数据分析,缺点是离线分析。
为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

流处理的演变: Lambda 架构,用两套系统,同时保证低延迟和结果准确。例如使用 Hadoop MapReduce进行批量数据的处理,使用Apache Storm进行实时数据的处理。这种架构在一定程度上解决了不同计算类型的问题,但是带来的问题是框架太多会导致平台复杂度过高、运维成本高等。在一套资源管理平台中管理不同类型的计算框架使用也是非常困难的事情。总而言之,Lambda 架构是构建大数据应用程序的一种很有效的解决方案,但是还不是最完美的方案。后来随着Apache Spark的分布式内存处理框架的出现,提出了将数据切分成微批的处理模式进行流式数据处理,从而能够在一套计算框架内完成批量计算和流式计算。但因为Spark本身是基于批处理模式的原因,并不能完美且高效地处理原生的数据流,因此对流式计算支持的相对较弱,可以说Spark的出现本质上是在一定程度上对Hadoop架构进行了一定的升级和优化。
为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

有状态的流式处理: 我们平常开发的Java应用系统时没有状态的。数据产生的本质,其实是一条条真实存在的事件,前面提到的不同的架构其实都是在一定程度违背了这种本质,需要通过在一定时延的情况下对业务数据进行处理,然后得到基于业务数据统计的准确结果。实际上,基于流式计算技术局限性,我们很难在数据产生的过程中进行计算并直接产生统计结果,因为这不仅对系统有非常高的要求,还必须要满足高性能、高吞吐、低延时等众多目标。而有状态流计算架构的提出,从一定程度上满足了企业的这种需求,企业基于实时的流式数据,维护所有计算过程的状态,所谓状态就是计算过程中产生的中间计算结果,每次计算新的数据进入到流式系统中都是基于中间状态结果的基础上进行运算,最终产生正确的统计结果。基于有状态计算的方式最大的优势是不需要将原始数据重新从外部存储中拿出来,从而进行全量计算,因为这种计算方式的代价可能是非常高的。从另一个角度讲,用户无须通过调度和协调各种批量计算工具,从数据仓库中获取数据统计结果,然后再落地存储,这些操作全部都可以基于流式计算完成,可以极大地减轻系统对其他框架的依赖,减少数据计算过程中的时间损耗以及硬件存储。将数据存储在本地内存,如果处理的过程中某个节点挂了,数据如何保存。就有了 RemoteStorage(内存的一个快照)实现了毫秒级别的延迟。但是问题是分布式项目不能保证数据处理的顺序,不能保证数据的准确性,在并发性上和吞吐量上存在瓶颈。Stom的实现方式。
为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

如果计算的结果能保持一致,实时计算在很短的时间内统计出结果,批量计算则需要等待一定时间才能得出,相信大多数用户会更加倾向于选择使用有状态流进行大数据处理。

流处理的演变: 整合 Spark Streaming 的高吞吐和正确性(使用的时候需要设置500ms之上延迟)和 Storm的低延迟。Flink通过实现Google Dataflow流式计算模型实现了高吞吐、低延迟、高性能兼具实时流式计算框架。同时Flink支持高度容错的状态管理,防止状态在计算过程中因为系统异常而出现丢失,Flink周期性地通过分布式快照技术 Checkpoints实现状态的持久化维护,使得即使在系统停机或者异常的情况下都能计算出正确的结果。而 Flink也在每一次的 Release版本中,不断推出新的特性,例如Queryable State功能的提出,容许用户通过远程的方式直接获取流式计算任务的状态信息,数据不需要落地数据库就能直接从Flink流式应用中查询。对于实时交互式的查询业务可以直接从Flink的状态中查询最新的结果。在未来,Flink将不仅作为实时流式处理的框架,更多的可能会成为一套实时的状态存储引擎,让更多的用户从有状态计算的技术中获益。
为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

Flink 的主要特点

事件驱动(Event-driven)
为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

基于流的世界观: 在Flink 的世界观中,一切都是由流组成的,离线数据是有界的流;实时数据是一个没有界限的流:这就是所谓的有界流和无界流。
为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

分成API 的设置: 越顶层越抽象,表达含义越简明,使用越方便。越底层越具体,表达能力越丰富,使用越灵活。
为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

Flink 的其他特点

【1】同时支持高吞吐、每秒处理数百万个事件,毫秒级延迟、高性能: Flink是目前开源社区中唯一集高吞吐、低延迟、高性能三者于一身的分布式流式数据处理框架。像Apache Spark也只能兼顾高吞吐和高性能特性,主要因为在Spark Streaming流式计算中无法做到低延迟保障;而流式计算框架Apache Storm只能支持低延迟和高性能特性,但是无法满足高吞吐的要求。而满足高吞吐、低延迟、高性能这三个目标对分布式流式计算框架来说是非常重要的。
【2】支持事件时间(event-time)和处理时间(processing-time)语义: 在流式计算领域中,窗口计算的地位举足轻重,但目前大多数框架窗口计算采用的都是系统时间(Process Time),也是事件传输到计算框架处理时,系统主机的当前时间。Flink能够支持基于事件时间(Event Time)语义进行窗口计算,也就是使用事件产生的时间,这种基于事件驱动的机制使得事件即使乱序到达,流系统也能够计算出精确的结果,保持了事件原本产生时的时序性,尽可能避免网络传输或硬件系统的影响。
【3】精确一次(exactly-once)的状态一致性保证: 所谓状态就是在流式计算过程中将算子的中间结果数据保存在内存或者文件系统中,等下一个事件进入算子后可以从之前的状态中获取中间结果中计算当前的结果,从而无须每次都基于全部的原始数据来统计结果,这种方式极大地提升了系统的性能,并降低了数据计算过程的资源消耗。对于数据量大且运算逻辑非常复杂的流式计算场景,有状态计算发挥了非常重要的作用。
【4】支持高度灵活的窗口(Window)操作: 在流处理应用中,数据是连续不断的,需要通过窗口的方式对流数据进行一定范围的聚合计算,例如统计在过去的1分钟内有多少用户点击某一网页,在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行再计算。Flink将窗口划分为基于Time、Count、Session,以及Data-driven等类型的窗口操作,窗口可以用灵活的触发条件定制化来达到对复杂的流传输模式的支持,用户可以定义不同的窗口触发机制来满足不同的需求。
【5】基于轻量级分布式快照(Snapshot)实现的容错: Flink能够分布式运行在上千个节点上,将一个大型计算任务的流程拆解成小的计算过程,然后将tesk分布到并行节点上进行处理。在任务执行过程中,能够自动发现事件处理过程中的错误而导致数据不一致的问题,比如:节点宕机、网路传输问题,或是由于用户因为升级或修复问题而导致计算服务重启等。在这些情况下,通过基于分布式快照技术的Checkpoints,将执行过程中的状态信息进行持久化存储,一旦任务出现异常停止,Flink就能够从Checkpoints中进行任务的自动恢复,以确保数据在处理过程中的一致性。
【5】与众多常用存储系统的链接: kafka、redis、hive、dfs等服务器进行链接
【6】Save Points(保存点): 高可用,动态扩展,实现724小时全天候运行,对于724小时运行的流式应用,数据源源不断地接入,在一段时间内应用的终止有可能导致数据的丢失或者计算结果的不准确,例如进行集群版本的升级、停机运维操作等操作。值得一提的是,Flink通过Save Points技术将任务执行的快照保存在存储介质上,当任务重启的时候可以直接从事先保存的Save Points恢复原有的计算状态,使得任务继续按照停机之前的状态运行,Save Points技术可以让用户更好地管理和运维实时流式应用。
【7】基于JVM实现独立的内存管理: 内存管理是所有计算框架需要重点考虑的部分,尤其对于计算量比较大的计算场景,数据在内存中该如何进行管理显得至关重要。针对内存管理,Flink实现了自身管理内存的机制,尽可能减少JVM GC对系统的影响。另外,Flink通过序列化/反序列化方法将所有的数据对象转换成二进制在内存中存储,降低数据存储的大小的同时,能够更加有效地对内存空间进行利用,降低GC带来的性能下降或任务异常的风险,因此Flink较其他分布式处理的框架会显得更加稳定,不会因为JVM GC等问题而影响整个应用的运行。

Flink vs Spark Streaming

流(Stream)和微批(micro-batching)
为什么选择 Flink 做实时处理,Flink,flink,大数据,java,面试,后端,职场和发展,性能优化

数据模型: spark 采用RDD模型,spark streaming 的 DStream 实际上也就是一组小批数据 RDD 的集合。Flink 基本数据模型是数据流,以及事件(Event)序列。
运行时架构: spark 是批计算,将 DAG 划分为不同的 stage,一个完成后才可以计算下一个。Flink 是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。

学习建议

【1】先实践再理论: 先学习应用,尝试构建复杂的 Flink Application
【2】横向扩展: 在构建复杂 Flink 生产业务后,横向使用学习 Storm、Spark、DataFlow 等系统,知识是演化过来的,必有前置和铺垫。多横向看看,打开视野。
【3】关注 Apache Flink 以及 Flink China 社区: 多交流,多提问,多输出。文章来源地址https://www.toymoban.com/news/detail-838510.html

到了这里,关于为什么选择 Flink 做实时处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据流处理与实时分析:Spark Streaming和Flink Stream SQL的对比与选择

    作者:禅与计算机程序设计艺术

    2024年02月07日
    浏览(35)
  • 为什么Flink-CDC读取Decimal等数值类型变成了非数值字符串

    每遇到一个问题,在经过努力研究明白之后,总想写点东西记录。怎奈又没这个好习惯,过了一两天这个激情就没了,想写也写不出来了。最近在做一个flink-cdc采集数据的测试和产品化开发,遇到一个数据转换的问题,折腾了我两个早上,有些心血来潮,就记录一下吧,对我

    2023年04月09日
    浏览(41)
  • “数据驱动”时代,企业为什么需要实时湖仓?

    当谈到数据湖的时候,大家都在说,可以把所有数据(结构化/半结构化/非结构化)一股脑都丢进去,进行统一的元数据管理。然后上层计算对接,进行流批计算/OLAP 分析/算法分析。 这个没问题,数据湖确实能承接底层的这部分能力,但是同时出现的问题也是不容忽视的。

    2024年02月10日
    浏览(33)
  • 公司为什么选择云数据库?它的魅力到底是什么!

    亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750小时;Amazon Dynamo DB 25GB存储容量 永久免费。) 谈到数据库想必我们都不陌生,其中主流

    2024年02月04日
    浏览(44)
  • 我为什么选择大数据和技术人生两三事

    程序员的职业赛道就像是一座迷宫,有前端的美丽花园,后端的黑暗洞穴,还有数据科学的神秘密室。你准备好探索这个充满挑战和机遇的迷宫了吗? 选择一个职业赛道,无外乎起点飘着兴趣,终点飘着财富! 即使是在学习辩证唯物主义之前的时期,我也总是笃信世间万物

    2024年03月14日
    浏览(52)
  • Flink流处理案例:实时数据聚合

    Apache Flink是一个流处理框架,可以处理大规模数据流,实现实时数据处理和分析。Flink支持各种数据源和接口,如Kafka、HDFS、TCP流等,可以实现高吞吐量、低延迟的流处理。 在本文中,我们将通过一个实际的Flink流处理案例来讲解Flink的核心概念、算法原理和最佳实践。我们将

    2024年02月19日
    浏览(31)
  • Flink流处理案例:实时数据去重

    在大数据处理领域,实时数据流处理是一项至关重要的技术,可以帮助我们实时分析和处理数据,从而更快地做出决策。Apache Flink是一款流处理框架,具有高性能和低延迟的特点,可以处理大规模的实时数据流。在本文中,我们将讨论Flink流处理的一个案例,即实时数据去重

    2024年04月27日
    浏览(24)
  • Flink实时大数据处理性能测试

    Flink是一个开源的流处理框架,用于实时大数据处理。它可以处理大量数据,提供低延迟和高吞吐量。Flink的性能测试是一项重要的任务,可以帮助我们了解其在实际应用中的表现。在本文中,我们将讨论Flink实时大数据处理性能测试的背景、核心概念、算法原理、代码实例、

    2024年03月18日
    浏览(39)
  • 为什么越来越多的企业选择云数据存储而放弃本地数据存储?

    随着企业的发展,它们会产生大量数据。企业已经意识到,利用他们的数据做出数据驱动的决策对于创新和保持竞争优势至关重要。 本文将会探讨企业在收集和分析大数据时可能面临的主要挑战,以及将企业数据仓库部署到本地或云数据存储的选择。我们将根据安全性、成本

    2024年02月08日
    浏览(34)
  • 为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据

    Fasthttp 是一个高性能的 Golang HTTP 框架,它在设计上做了许多优化以提高性能。其中一个显著的设计选择是使用 slice 而非 map 来存储数据,尤其是在处理 HTTP headers 时。 为什么呢? 本文将从简单到复杂,逐步剖析为什么 Fasthttp 选择使用 slice 而非 map,并通过代码示例解释这一

    2024年01月22日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包