Flink 弹性伸缩(Elastic Scaling)Adaptive Scheduler、Reactive Mode 与外部资源声明
1. 弹性伸缩到底解决什么问题核心问题不是“能不能调并发”而是“资源经常不稳定”提交时集群 slot 不够以前要么卡住、要么失败、要么你手动降并发重提运行中 TaskManager 掉线默认调度器可能触发失败/重启策略而自适应调度器可以先自动缩容保证作业继续跑负载变化输入速率变高/变低理想情况是作业能自动吃满资源或释放资源而不用你做编排2. Adaptive SchedulerStreaming怎么工作Adaptive Scheduler 的核心能力根据可用 slots 动态调整作业并发度。2.1 基本行为如果 slot 不够跑满你配置的并发它会自动降低并发让作业先跑起来运行中新增 slot它会自动提升并发直到达到你配置的并发上限对 TaskManager 丢失更“抗打”掉了就缩容继续跑不是硬等资源或频繁失败2.2 背后的关键声明式资源管理Declarative Resource Management传统模式是“我要 N 个 slot”。自适应调度器更像“我希望拿到这些资源上限/边界”由 ResourceManager 尽力满足。更进一步当 JobMaster 在运行时拿到更多资源会自动用最近可用的状态点最新 savepoint/最新 checkpoint 语义上取决于模式触发 rescale减少外部编排依赖。3. Reactive Mode让作业永远“吃满整个集群”Reactive Mode 是 Adaptive Scheduler 的一个特殊模式假设单集群单作业通常用 Application Mode 强制。3.1 Reactive Mode 的特点忽略你提交时配置的 parallelism把它当成“无穷大”作业永远使用集群当前所有可用资源加 TaskManager ⇒ 自动扩容减 TaskManager ⇒ 自动缩容3.2 为什么它特别适合做自动扩缩Reactive Mode 的 rescale 事件会重启作业并从最新完成的 checkpoint恢复不需要额外触发 savepoint省掉人工 rescale 的典型步骤rescale 后会重放多少数据取决于 checkpoint 间隔恢复耗时和状态大小强相关因此最常见的“自动扩缩”组合是外部系统只管增减 TaskManagerK8S 副本数、云上 ASG 等Flink 自己负责把并发调到“当前资源下能跑到的最大值”并保证状态恢复4. Externalized Declarative Resource Management给运行中作业“重新声明资源需求”Flink 1.18从 Flink 1.18.x 开始如果你希望 Adaptive Scheduler 能响应“输入速率变化/工作负载变化”而做更智能的 rescale仅靠 slot 变化可能不够需要用外部化声明式资源管理在运行时重新声明资源边界。这是一个 MVP 特性社区希望用户反馈。它提供了一个 REST API可以对运行中的 job 做“按 vertex 维度”的并发上下界声明效果上很像“在线 rescale 控制面”。4.1 REST API 示例接口PUT /jobs/job-id/resource-requirements请求体按 vertex id 设置并发上下界{first-vertex-id:{parallelism:{lowerBound:3,upperBound:5}},second-vertex-id:{parallelism:{lowerBound:2,upperBound:3}}}你可以用 curl 这样调用示例curl-X PUThttp://jm-host:8081/jobs/job-id/resource-requirements\-HContent-Type: application/json\-d{ vertex-1: {parallelism: {lowerBound: 4, upperBound: 16}}, vertex-2: {parallelism: {lowerBound: 2, upperBound: 8}} }实际体验上它也被 UI 暗示成“缩放按钮”你在 Flink Web UI 的 Job Overview 里可以尝试 up-scale/down-scale。4.2 两个典型使用场景Session Cluster多作业抢资源需要更细粒度地控制每个作业拿到多少Application Cluster Active Resource Manager例如某些场景下依赖 Flink 去“贪婪拉起 TaskManager”你仍然希望拥有类似 Reactive Mode 的 rescale 能力如果你希望一站式自动伸缩体验文档也提到可结合 Apache Flink Kubernetes Operator 来做。5. 如何启用 Adaptive Scheduler在集群级别切换调度器替代默认 schedulerjobmanager.scheduler:adaptiveAdaptive Scheduler 的相关参数都以jobmanager.adaptive-scheduler.*为前缀。重要提醒Adaptive Scheduler 仅适用于 Streaming 作业提交 Batch 作业时Flink 会走 Batch 的默认调度器通常是 Adaptive Batch Scheduler6. Reactive Mode 快速上手本机单机演示下面是文档里的演示流程Application Mode1把示例作业放进 libcp./examples/streaming/TopSpeedWindowing.jar lib/2以 Reactive Mode 启动 standalone application并设置 checkpoint./bin/standalone-job.sh start\-Dscheduler-modereactive\-Dexecution.checkpointing.interval10s\-j org.apache.flink.streaming.examples.windowing.TopSpeedWindowing3启动第一个 TaskManager./bin/taskmanager.sh start扩容再启动一个 TaskManager./bin/taskmanager.sh start缩容停止一个 TaskManager./bin/taskmanager.sh stop你会看到作业随着 TaskManager 数量变化发生 rescale触发重启并从最新 checkpoint 恢复。7. 关键配置与生产建议7.1 必须配置 checkpoint尤其有状态作业Reactive Mode 的 rescale 是从最新完成 checkpoint 恢复不开 checkpoint状态丢失风险很高checkpoint 也决定重启策略如果没配置重启策略Reactive Mode 可能直接 fail 而不是“缩放继续跑”7.2 资源等待与稳定窗口避免频繁重启Reactive Mode 下默认行为很“激进”jobmanager.adaptive-scheduler.resource-wait-timeout默认 -1永远等资源jobmanager.adaptive-scheduler.resource-stabilization-timeout默认 0资源一到就立刻调度问题TaskManager 如果是一个个慢慢连进来就会导致“每来一个 TM 就重启一次”。对策增大resource-stabilization-timeout等资源稳定后再跑配置jobmanager.adaptive-scheduler.min-parallelism-increase只有并发提升达到一定幅度才触发扩容重启用jobmanager.adaptive-scheduler.scaling-interval.min控制两次缩放的最小间隔默认 30s必要时用jobmanager.adaptive-scheduler.scaling-interval.max强制在一定时间后触发一次缩放默认关闭7.3 下缩可能“卡 50 秒”心跳超时导致的等待如果缩容时 TaskManager 被不优雅杀掉SIGKILL 而不是 SIGTERMFlink 需要等心跳超时才确认它离线常见会卡一段时间文档提到大约 50 秒。可以调低heartbeat.timeout但要谨慎心跳 timeout 太低在网络抖动或长 GC 时可能误判 TM 失联导致不必要的重启同时确保heartbeat.interval heartbeat.timeout7.4 并发影响方式只能用 maxParallelism 施加上限Reactive Mode 下你显式 set 的 parallelism 会被忽略。你能影响的主要是作业/算子maxParallelism上限 2^15 32768但 maxParallelism 设得太高会增加内部结构维护成本性能可能变差。建议按业务可接受的扩展上限设置不要无脑拉满。8. 限制与取舍8.1 Adaptive Scheduler 的限制仅支持 Streaming 作业不支持 partial failover默认 scheduler 可以按 region 局部重启Adaptive Scheduler 会整作业重启对“纯并行、无强依赖”的作业会影响恢复时间每次 scaling 都会触发 job/task 重启task attempt 数会增加8.2 Reactive Mode 的限制更严格部署形态限制较多主要支持 Standalone Application含 Docker Application、Standalone K8S Application Cluster不支持 Standalone Session Cluster不支持单集群多作业Reactive 假设单作业吃满资源文档明确提示这仍是实验性能力默认 scheduler 的一些能力尚未覆盖9. 你该怎么选一个实用决策口径你是 Streaming集群资源会波动且希望 TM 掉线时作业自动缩容继续跑选 Adaptive Schedulerjobmanager.scheduler: adaptive你是 Streaming想做“真正的自动扩缩”让作业永远吃满集群资源选 Reactive ModeApplication Mode 必开 checkpoint外部系统只负责增减 TaskManager你是 Batch希望并发、Join、数据分布在运行时更贴合真实数据选 Adaptive Batch SchedulerBatch 默认

相关新闻

Java性能优化你真的玩明白了吗?

Java性能优化你真的玩明白了吗?

作为一个程序员,性能优化是常有的事情,不管你是刚入行的小白还是已经入坑了很久的小秃头都会经历很多不同层次的性能优化——小到代码审查大到整个系统设计的优化!大势所趋之下,如何让自己的优化方向精准到性能瓶颈的那个点以及尽…

2026/5/17 1:31:17 阅读更多 →
0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency

0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency

1.跳跃游戏只需要一个mx标记能跳到的最大地方,不断更新就行,如果到最后i>mx,那就说明到了最后一个节点,mx跳不到i这个位置,那就是False2.跳跃游戏Ⅱ关键两个参数一个是当前能走到的最远距离一个是下一次能走到的最远…

2026/5/17 1:31:17 阅读更多 →
雷达导引头技术发展深度分析报告

雷达导引头技术发展深度分析报告

一、执行摘要 当前全球雷达导引头技术正处于从机械扫描向有源相控阵(AESA)全面过渡的关键时期。美国通过AIM-260项目确立技术标杆,以色列依托Elta Systems的AESA雷达生态构建独特优势,俄罗斯则通过R-77M的实战部署实现技术追赶。三国技术路径呈现明显差异:美国追求多模复…

2026/5/17 1:31:17 阅读更多 →

最新新闻

数字签名算法的密码分析方法研究

数字签名算法的密码分析方法研究

目 录 第1章 引言........................... 4 1.1 研究背景与意义................ 4 1.2 国内外研究现状................ 4 1.3 研究内容与结构................ 5 第2章 数字签名算法概述............... 5 2.1 数字签名的基本概念............ 5 2.2 数字签名的…

2026/7/3 2:54:39 阅读更多 →
太玄经二十七部(3位三进制符号表(27组))

太玄经二十七部(3位三进制符号表(27组))

太玄经二十七部(3位三进制符号表(27组)) 三元九宫图: ​​​​​​​ 1. 天部(第一位为 ,共9组) 序号 符号组合 三进制值 太玄部名 核心含义 1 (1,1,1) 天部中天 纯阳至极&am…

2026/7/3 2:52:38 阅读更多 →
医疗预测建模实战:从临床共识到可行动预警

医疗预测建模实战:从临床共识到可行动预警

医疗预测建模这件事,我干了整整十二年——从三甲医院信息科借调支援的“临时工”,到后来牵头搭建省级慢病风险预警平台,再到如今帮基层社区卫生服务中心落地轻量化AI辅助决策工具。说实话,第一次看到“Predictive Modeling in Hea…

2026/7/3 2:50:37 阅读更多 →
终极B站视频下载指南:解锁大会员4K和充电专属内容

终极B站视频下载指南:解锁大会员4K和充电专属内容

终极B站视频下载指南:解锁大会员4K和充电专属内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否曾经想要永久保存…

2026/7/3 2:44:33 阅读更多 →
Loki MCP Server -支持Claude Desktop/Claude Code/Cursor 等客户端通过自然语言查询日志

Loki MCP Server -支持Claude Desktop/Claude Code/Cursor 等客户端通过自然语言查询日志

MCP定位,技术栈,架构,项目结构,基础框架搭建,开发部署及常见问题 # Loki MCP Server - CLAUDE.md> Go 实现的 MCP Server,集成 Grafana Loki 日志查询。支持 Claude Desktop / Claude Code / Cursor 等…

2026/7/3 2:42:31 阅读更多 →
嵌套 H5 的跨端通信:iOS / Android / 小程序 / 浏览器

嵌套 H5 的跨端通信:iOS / Android / 小程序 / 浏览器

一、为什么要做“统一桥接层”? “Write once, run anywhere” 对于纯展示型 H5 是成立的。但只要涉及到业务交互,比如:调起原生登录、保存图片到相册、修改系统状态栏颜色、分享到朋友圈,浏览器标准的 Web API 根本无能为力。 …

2026/7/3 2:40:31 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻