本技能提供 Apache Flink 开发最佳实践,面向使用 DataStream API、Flink SQL 与状态管理构建流处理作业的开发者。
用途:指导生产级 Flink 作业的设计、状态管理、检查点、事件时间处理、连接器配置与部署。
主要能力与要点:核心原则包括为每个算子分配稳定 UID(.uid("stable-id"))、使用带 TTL 的 keyed state、采用事件时间与水位线、生产环境使用 RocksDB 状态后端配合增量检查点、算子内避免阻塞 I/O(改用 AsyncDataStream)、命名算子,以及生产用 Application Mode 部署。作业结构建议一个作业一条管道,配置外置化,显式设置 setMaxParallelism(2 的幂)。DataStream API 部分给出算子选择表、优先 POJO 序列化、避免全局禁用算子链、按输入分区数设置 source 并行度并处理热点键。Flink SQL 推荐用于 ETL 与聚合,须设置 table.exec.state.ttl,版本化查询用 temporal join。状态管理区分 ValueState、ListState、MapState 等,推荐 MapState 替代 ValueState<Map>,并配置 StateTtlConfig。检查点部分给出 setCheckpointingMode(EXACTLY_ONCE)、间隔、超时、最小间隔等配置,检查点存储须用分布式文件系统,背压下可启用非对齐检查点,升级前用 flink savepoint。水位线需尽量靠近 source,设置 withIdleness 处理空闲分区,显式处理迟到数据。窗口类型与 reduce/aggregate 优于 ProcessWindowFunction。连接器涵盖 Kafka source/sink 与文件系统 sink 的配置要点。还包含内存配置、背压诊断与解决顺序、端到端精确一次的三要素、Application Mode 与 Kubernetes Operator 部署示例。
限制:资料未提供具体收费、价格或平台信息;部分内容(如测试章节)在提供的资料中被截断,暂未提供完整内容。