最火热的分布式流式处理引擎-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学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
1月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
73 3
|
23天前
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
800 17
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
328 0
|
1月前
|
消息中间件 关系型数据库 Java
‘分布式事务‘ 圣经:从入门到精通,架构师尼恩最新、最全详解 (50+图文4万字全面总结 )
本文 是 基于尼恩之前写的一篇 分布式事务的文章 升级而来 , 尼恩之前写的 分布式事务的文章, 在全网阅读量 100万次以上 , 被很多培训机构 作为 顶级教程。 此文修改了 老版本的 一个大bug , 大家不要再看老版本啦。
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
1月前
|
存储 运维 监控
实时计算Flink版在稳定性、性能、开发运维、安全能力等等跟其他引擎及自建Flink集群比较。
实时计算Flink版在稳定性、性能、开发运维和安全能力等方面表现出色。其自研的高性能状态存储引擎GeminiStateBackend显著提升了作业稳定性,状态管理优化使性能提升40%以上。核心性能较开源Flink提升2-3倍,资源利用率提高100%。提供一站式开发管理、自动化运维和丰富的监控告警功能,支持多语言开发和智能调优。安全方面,具备访问控制、高可用保障和全链路容错能力,确保企业级应用的安全与稳定。
43 0
|
2月前
|
Dubbo Java 应用服务中间件
分布式-dubbo的入门
分布式-dubbo的入门
|
1月前
|
存储 缓存 数据处理
深度解析:Hologres分布式存储引擎设计原理及其优化策略
【10月更文挑战第9天】在大数据时代,数据的规模和复杂性不断增加,这对数据库系统提出了更高的要求。传统的单机数据库难以应对海量数据处理的需求,而分布式数据库通过水平扩展提供了更好的解决方案。阿里云推出的Hologres是一个实时交互式分析服务,它结合了OLAP(在线分析处理)与OLTP(在线事务处理)的优势,能够在大规模数据集上提供低延迟的数据查询能力。本文将深入探讨Hologres分布式存储引擎的设计原理,并介绍一些关键的优化策略。
106 0
|
3月前
|
Java Spring 安全
Spring 框架邂逅 OAuth2:解锁现代应用安全认证的秘密武器,你准备好迎接变革了吗?
【8月更文挑战第31天】现代化应用的安全性至关重要,OAuth2 作为实现认证和授权的标准协议之一,被广泛采用。Spring 框架通过 Spring Security 提供了强大的 OAuth2 支持,简化了集成过程。本文将通过问答形式详细介绍如何在 Spring 应用中集成 OAuth2,包括 OAuth2 的基本概念、集成步骤及资源服务器保护方法。首先,需要在项目中添加 `spring-security-oauth2-client` 和 `spring-security-oauth2-resource-server` 依赖。
55 0
|
3月前
|
消息中间件 数据挖掘 Kafka
揭秘大数据时代的极速王者!Flink:颠覆性流处理引擎,让实时数据分析燃爆你的想象力!
【8月更文挑战第29天】Apache Flink 是一个高性能的分布式流处理框架,适用于高吞吐量和低延迟的实时数据处理。它采用统一执行引擎处理有界和无界数据流,具备精确状态管理和灵活窗口操作等特性。Flink 支持毫秒级处理和广泛生态集成,但学习曲线较陡峭,社区相对较小。通过实时日志分析示例,我们展示了如何利用 Flink 从 Kafka 中读取数据并进行词频统计,体现了其强大功能和灵活性。
75 0

热门文章

最新文章

下一篇
无影云桌面