最火热的分布式流式处理引擎-Flink入门介绍

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink是目前流行的分布式流式处理引擎,是Apache的顶级项目。Flink支持高吞吐、低延迟、高性能、Exactly-Once语义等特性,同时其基于"批是特殊的流"的理念,既实现了流式处理计算,又实现了批处理计算,达到了真正意义上的批流统一。

一、什么是Flink?

Flink是目前流行的分布式流式处理引擎,是Apache的顶级项目。Flink支持高吞吐、低延迟、高性能、Exactly-Once语义等特性,同时其基于"批是特殊的流"的理念,既实现了流式处理计算,又实现了批处理计算,达到了真正意义上的批流统一。

Flink具备极高的处理能力,集群可达数千服务器的规模。目前在国内已经被广泛接受,一些著名的互联网公司,如阿里巴巴、美团、滴滴、今日头条等,都在大规模使用Flink,其中阿里巴巴还基于Flink进行深度定制,提供了Blink版本,将将其一些新特性贡献给了开源社区。

可以说,Flink是未来流式计算的闪耀之星。

二、Flink应用场景

所有的软件都要有好的应用场景才能够被不断优化,向前发展。既然Flink具备高性能的流式处理能力,那么实际可以应用到哪些方面呢?

在实际的生产应用环境中,涉及到流式的计算实际上是非常多的,因为各个系统都在不断地产生大量数据,例如用户购买数据、用户行为数据、系统运行日志数据、交易统计数据等,这些场景下都会涉及大量的计算工作,传统地处理方式更多是离线批量地处理,实效性上比较差,难以适应现在业务发展的需要,而Flink天生适合这种应用场景。

2.1 实时推荐

收集用户行为数据,进行实时计算,将计算结果更新到推荐模型中,然后反过来对用户的喜爱进行实时预测,然后将推荐数据展示给用户,提高用户对商品的匹配度。用户行为的数据是十分巨大的,而快速计算实时反馈又是十分必要的,因为用户的浏览购买行为是有时间限制的,类似这种场景,高吞吐、高性能的FLink正好排上用场。

2.2 实时反欺诈行为检测

在金融领域中,为保障安全和减少损失,反欺诈系统是必不可少的。传统的反欺诈手段需要较长的时间,大部分只能提供事后的追查,而无法提前规避。使用Flink能够实时完成反欺诈规则的过滤和判断,快速给出结果,提前对信用卡申请欺诈行为、交易欺诈行为等进行防堵。

2.3 实时报表

传统的数据报表都是T+N的模式,例如T+2日出账单,T+1日出结算报表等,整体时效性比较差,用户体验也不够好,在信息化的今天,实时的数据报表已经是十分常见的需求了。使用FLink采集来自多个系统的数据源进行数据的清洗,按照一定的规则实时出数据报表,这是一件很自然的事情。

2.4 实时大屏

实时大屏是目前最广泛的一个应用了,典型的代表就是淘宝双11的监控大屏,据报道其计算性能达到超过30万笔/秒。Flink的高性能适合这种大流量的流失处理场景,并且其提供的Window、Time等功能,能够轻松地应付诸如1分钟内交易笔数、5分钟交易金额这类统计需求。

2.4 系统监控分析

使用Flink流式计算对各类服务、app运行的相关指标数据、用户行为数据进行数据分析,实时提供相关的监控和哦统计数据,为发现服务异常、市场广告决策等提供参考。

以上是一些场景的Flink的应用场景,当然Flink的应用绝不仅仅如此,所有需要高性能的、高吞吐、低延迟的流式计算场景,都可以考虑使用Flink。

三、同类比较

说到流式计算,大家一定会想到Apache Storm、Spark Streaming,这两个也是开源界中流式计算十分热门的产品,那么与Flink有什么异同点呢?在实际技术选型的时候应该选择哪一种呢,下面我们来对这几个流式处理框架进行一下比较。

流计算框架对比.PNG

从以上对比来看,如果应用场景下需要同时支持批处理计算和流处理计算、需要支持Exactly-Once语义或者需要有状态的流计算,那么可以可以排除Storm,选择Flink或者Spark Streaming。

若是只需要进行基于无状态的流式计算,且对吞吐量没有太高要求,并且对于低延迟要求较高,那么可以考虑选择Storm或者Flink,Storm目前成熟度更高,且在行业内应用更加广泛,出现问题更加方便定位。

在Flink和Spark  Streaming的选择上,Flink明显在有状态的计算以及延时方面优于Spark  Streaming,两者对于批和流的理念是完全不一样的,Flink将批当作特殊的流,其对于流的支持的原生的,其延时达到毫秒级,而Spark  Streaming认为流是特殊的批,是将流当作微批来处理,所以在延时上一般是在秒级。

当然目前来看Spark Streaming的成熟度会优于Flink,但是Flink目前发展势头强劲,国内多家互联网巨头已经在尝试往Flink转型,社区的成熟度也越来越高,Flink的发展是势不可挡的。

三、Flink的技术架构

3.1 软件技术栈

Flink的软件技术栈如下图所示,遵循的是分层的架构,从上到下分别是API和Libraries层、Runtime核心层和物理部署层。

1.png

  • API和Libraries层 Flink提供了DataStream API用于支持流式计算,提供了DataSet  API用于支持批处理计算。另外为了方便用户的使用提供更加高层的功能,基于DataStream  API之上构建了CEP(复杂事件处理库)和Table API以及SQL(用于流),基于DataSet  API之上提供了FlinkML机器学习库、Gelly图像处理库、Table API和SQL(用于批)。这里也体现出了Flink  API的完善,为不同的需要提供了不同粒度的API,如Table API和SQL使用简单,但是可定制化弱,功能较单一,DataStream  API以及更加底层的API则提供更加丰富的功能,但是更加复杂。
  • Runtime核心层Runtime核心层是Flink计算框架的核心实现部分,作业提交、任务调度、状态收集、容错恢复等功能都与这一层相关。
  • 物理部署层物理部署层提供了不同形式的部署支持,例如本地单机部署,基于YARN的集群部署,云版本等。

3.2 逻辑架构

Flink逻辑架构如下如所示,Flink采用Master-Slave的架构,JobManager作为Master角色,整个集群中只能有一个活跃的Master(JobManager),TaskManager作为Slave角色(Worker),集群中TaskManager的数量可达数千台。

  • JobMangerJobManager负责整个Flink集群的任务调度和资源管理,负责与TaskManager交互,为应用分配Task   Slot资源,并通知TaskManager启动应用,任务完成以后也会将状态返回给Client。另外JobManager还负责Checkpoint的管理,出发TaskManager执行Checkpoint操作,以便于故障恢复。
  • TaskManagerTaskManager负责具体节点的资源申请和管理,接收JobManager的命令进行相应的任务操作。TaskManager使用心跳机制保持与JobManager的感知,定期汇报资源、状态统计信息到JobManager。当Client提交一个任务时,JobManager根据TaskManager汇报的资源情况选择某一个具体执行任务的TaskManager,将任务分配给它执行。TaskManager之间可以通过数据流的方式进行数据交互。
  • Actor System负责JobManager和TaskManager之间的通讯,Actor是Akka  Framework的一个角色,Akka是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的  Actor 模型应用,常用于分布式高并发的场景下。
  • Client客户端用于提交任务到Flink集群,其仍然是通过Akka Framework构建网络连接。Flink程序会通过Optimizer和Graph Builder生成JobGraph,通过Client提交到JobManager。

2.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
8天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
26 3
|
2月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
212 0
|
3天前
|
消息中间件 关系型数据库 Java
‘分布式事务‘ 圣经:从入门到精通,架构师尼恩最新、最全详解 (50+图文4万字全面总结 )
本文 是 基于尼恩之前写的一篇 分布式事务的文章 升级而来 , 尼恩之前写的 分布式事务的文章, 在全网阅读量 100万次以上 , 被很多培训机构 作为 顶级教程。 此文修改了 老版本的 一个大bug , 大家不要再看老版本啦。
|
1月前
|
Dubbo Java 应用服务中间件
分布式-dubbo的入门
分布式-dubbo的入门
|
3月前
|
SQL 关系型数据库 MySQL
如何在Dataphin中构建Flink+Paimon流式湖仓方案
当前大数据处理工业界非常重要的一个大趋势是一体化,尤其是湖仓一体架构。与过去分散的数据仓库和数据湖不同,湖仓一体架构通过将数据存储和处理融为一体,不仅提升了数据访问速度和处理效率,还简化了数据管理流程,降低了资源成本。企业可以更轻松地实现数据治理和分析,从而快速决策。paimon是国内开源的,也是最年轻的成员。 本文主要演示如何在 Dataphin 产品中构建 Flink+Paimon 的流式湖仓方案。
7659 10
如何在Dataphin中构建Flink+Paimon流式湖仓方案
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
PyTorch与DistributedDataParallel:分布式训练入门指南
【8月更文第27天】随着深度学习模型变得越来越复杂,单一GPU已经无法满足训练大规模模型的需求。分布式训练成为了加速模型训练的关键技术之一。PyTorch 提供了多种工具来支持分布式训练,其中 DistributedDataParallel (DDP) 是一个非常受欢迎且易用的选择。本文将详细介绍如何使用 PyTorch 的 DDP 模块来进行分布式训练,并通过一个简单的示例来演示其使用方法。
139 2
|
2月前
|
SQL 监控 大数据
Serverless 应用的监控与调试问题之Flink流式数仓对于工商银行的数据链路要如何简化
Serverless 应用的监控与调试问题之Flink流式数仓对于工商银行的数据链路要如何简化
|
2月前
|
存储 Java 流计算
Flink 分布式快照,神秘机制背后究竟隐藏着怎样的惊人奥秘?快来一探究竟!
【8月更文挑战第26天】Flink是一款开源框架,支持有状态流处理与批处理任务。其核心功能之一为分布式快照,通过“检查点(Checkpoint)”机制确保系统能在故障发生时从最近的一致性状态恢复,实现可靠容错。Flink通过JobManager触发检查点,各节点暂停接收新数据并保存当前状态至稳定存储(如HDFS)。采用“异步屏障快照(Asynchronous Barrier Snapshotting)”技术,插入特殊标记“屏障(Barrier)”随数据流传播,在不影响整体流程的同时高效完成状态保存。例如可在Flink中设置每1000毫秒进行一次检查点并指定存储位置。
50 0
|
1月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
3月前
|
存储 监控 大数据
阿里云实时计算Flink在多行业的应用和实践
本文整理自 Flink Forward Asia 2023 中闭门会的分享。主要分享实时计算在各行业的应用实践,对回归实时计算的重点场景进行介绍以及企业如何使用实时计算技术,并且提供一些在技术架构上的参考建议。
779 7
阿里云实时计算Flink在多行业的应用和实践

热门文章

最新文章