Flink编程模型是一个分层的抽象体系,支持批处理和流处理的统一计算框架,其核心设计围绕数据流处理展开。以下是关键要点:

数据处理分层

Flink提供四层API抽象:

  1. SQL/Table API:最高层抽象,通过声明式语法处理结构化数据,支持流批统一查询
  2. DataStream/DataSet API:面向开发者的核心接口,DataStream用于无界流处理,DataSet用于有界批处理
  3. Stateful Stream Processing:底层API,可直接操作状态、时间等原语,适用于复杂事件处理

核心编程结构

所有Flink程序包含以下基本流程:

  1. 创建执行环境(批处理/流处理)
  2. 定义数据源source(如文件、Kafka等)
  3. 应用转换操作transformation(map、filter、window等)
  4. 指定结果输出位置sink
  5. 触发程序执行(延迟执行机制)

流批统一特性

  • 有界/无界数据集统一处理:通过时间范围将无界数据切分为有界数据块,实现批处理语义
  • 统一状态管理:支持键控状态(Keyed State)和算子状态(Operator State),保证精确一次处理语义

时间与窗口机制

  • 时间类型:事件时间(Event Time)、处理时间(Processing Time)、摄取时间(Ingestion Time)
  • 窗口类型:滚动/滑动时间窗口、计数窗口、会话窗口,支持事件时间乱序处理的水印(Watermark)机制

执行模型

采用主从架构:

  • JobManager:负责任务调度、检查点协调
  • TaskManager:执行具体任务,通过任务槽(Task Slot)管理资源

该模型通过分层抽象和流批一体设计,实现了从简单ETL到复杂状态计算的广泛场景覆盖。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐