Flink如何实现流量控制?

提问者:帅平 问题分类:面试刷题
Flink如何实现流量控制?
1 个回答
我是白云
我是白云
Flink的流量控制通过基于信用(Credit-based)的反压机制实现,核心目标是协调生产者和消费者的速率,避免网络拥塞。例如:若窗口聚合算子处理变慢,其输入缓冲区逐渐占满,信用值减少,上游Map算子发送速率降低,最终Source读取数据的速度同步减缓,实现端到端的流量控制。具体的配置如下:
1、网络缓冲区配置:
taskmanager.network.memory.buffer-debloat.enabled(Flink 1.14+)
taskmanager.network.memory.buffers-per-channel
taskmanager.network.memory.floating-buffers-per-gate
taskmanager.memory.segment-size(默认32KB)
2、反压检测参数
web.backpressure.refresh-interval(默认1分钟)
web.backpressure.num-samples(默认100)
web.backpressure.delay-between-samples(默认50ms)
3、流量控制算法
taskmanager.network.buffer-debloat.enabled(默认true)
taskmanager.network.buffer-debloat.target(默认1s)
taskmanager.network.buffer-debloat.period(默认500ms)
4、并行度配置
parallelism.default(作业级默认并行度)
taskmanager.numberOfTaskSlots(每个TaskManager的Slot数)
5、其他配置
#启用非对齐Checkpoint​(Flink 1.11+):
execution.checkpointing.unaligned: true
#限制最大并行度​
env.setMaxParallelism(1024);  // 避免网络分区过多导致缓冲区碎片化
发布于:3周前 (05-19) IP属地:
我来回答