Flink - [01] 概述
一、Flink 是什么
- 是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布,数据通信以及容错机制等功能。
- 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。
- 是为分布式、高性能、随时空iji准确的流处理应用程序打造的开源流处理框架。
二、为什么选择Flink
流数据更真实地反映了我们的生活方式,传统的数据架构是基于有限数据集的。
我们的目标:
- 低延迟
- 高吞吐
- 结果的准确性和良好的容错性
三、Flink的特点
事件驱动:事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。比较典型的就是以Kafka为代表的消息队列,几乎都是事件驱动型应用。
基于流的世界观:在Flink的世界观中,一切都是由流组成的,离线数据是有界的流;实时数据是一个没有界限的流,即无界流。
其他特点:
- 支持事件事件(event-time)和处理时间(processing-time)语义。
- 精确一次(exactly-once)的状态一致性保证。
- 低延迟,每秒处理数百万个时间,毫秒级延迟。
- 与众多常用存储系统的连接。
- 高可用,动态扩展,实现7*24小时全天候运行。
四、无界流和有界流
无界流:无界数据流有一个开始但是没有结束,它们不会在生成时终止并提交数据,必须连续处理无界流,也就是说必须在获取后立即处理event。对于无界数据流我们无法等待所有的数据都到达,因为输入是无界的,并且在任何时间点都不会完成。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取event,以便能够推断结果完整性。
有界流:有界数据流有明确定义的开始和结束,可以在执行任何计算之间通过所有数据来处理有界流,处理有界流不需要有序获取,因为可以对有界数据集进行排序,有界流的处理也称为批处理。
这种以流为世界观的架构,获得的最大好处就是具有极低的延迟。
批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。
流处理的特点是无界、实时,无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。
在Spark的世界观中,一切都是由批次组成的,离线数据是一个大批次,而实时数据是由一个一个无限的小批次组成的。
在Flink的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没有界限的流,这就是所谓的有界流和无界流。
五、Flink VS Spark Streaming
数据模型
- Spark采用RDD模型,Spark Streaming的DStream实际上也是一组组小批数据RDD的集合。
- Flink基本数据模型是数据流,以及事件(Event)序列。
运行时架构
- Spark是批计算,将DAG划分为不同的Stage,一个完成后才可以计算下一个。
- Flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。
— 要养成终生学习的习惯 —
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南