上传网站代码,网站活动页面,安康市信息平台,企业门户网站功能列表一步一个脚印#xff0c;一天一道面试题#xff08;有些难点的面试题不一定每天都能发#xff0c;但每天都会写#xff09;
什么是背压 Backpressure
在流式处理框架中#xff0c;如果下游的处理速度#xff0c;比上游的输入数据小#xff0c;就会导致程序处理慢…一步一个脚印一天一道面试题有些难点的面试题不一定每天都能发但每天都会写
什么是背压 Backpressure
在流式处理框架中如果下游的处理速度比上游的输入数据小就会导致程序处理慢不稳定甚至出现崩溃等问题。
出现背压的原因 上游数据突然增大 比如数据源突然数据量增大多倍下游处理速度跟不上。就像平时的小饭店能处理的很轻松突然到了过年人多了很多就会需要客人排队。 网络机器异常等 这个也好理解如果 team 里突然有人生病了会导致效率低下。 下游复杂度并行度与上游算子不同 可能下游算子需要处理更久或者并行度比上游小处理的没有上游快进而可能导致背压。 数据倾斜 数据倾斜会导致任务分配不均匀比如任务平时均匀分给 5 个同事结果有天数据倾斜把 3个人的任务分配给了其中一个同事那么他处理时间就会比其他同事长进而影响团队进度。
背压导致的影响
背压不一定会导致程序直接崩溃但它可能会引发一系列其他问题最终导致系统不稳定甚至崩溃。具体来说背压可能导致以下情况 增加处理延迟 背压会导致数据积压增加数据处理的延迟。如果背压持续存在且得不到有效解决处理延迟可能会不断累积最终使系统无法及时响应或处理数据。 降低系统吞吐量 由于背压限制了数据流的速率系统的整体吞吐量可能会下降。这会导致系统无法充分利用资源处理能力受限影响系统的性能表现。 资源浪费 背压可能导致部分计算资源空闲或被浪费因为某些任务可能没有足够的输入数据来处理。这样就浪费了资源降低了系统的效率。 系统稳定性问题 背压如果得不到有效管理和解决可能会导致数据积压越来越严重最终可能引发系统的不稳定性。数据积压可能导致内存消耗过大、任务阻塞等问题最终可能使系统崩溃或不可用。
如何发现定位背压
背压本质是一种不健康亚健康状态可能会出现超时, 失败等问题
在 Web 页面发现 Checkpoint 超时失败在 JobManager 中会找到 Checkpoint expired before completing 报错日志在 Web 页面的 BackPressure 界面可以看到
如何解决背压亚健康问题 调整并行度 背压可能是由于某些任务的并行度过高或过低导致的。通过调整任务的并行度使其能够更好地匹配数据的产生和消费速度从而减少背压问题的发生。 代码效率低 -检查点 Checkpoint 频率过快 -水位线 Watermark 更新频率过高 -状态 State 更新快 -代码逻辑复杂如复杂 SQL JOIN 等需要具体针对优化 // 设置Checkpoint相关配置env.enableCheckpointing(10 * 1000); // 设置Checkpoint间隔为10秒env.getCheckpointConfig().setCheckpointTimeout(30 * 1000); // 设置Checkpoint超时时间为30秒// 设置Watermark相关配置env.getConfig().setAutoWatermarkInterval(1 * 1000); // 设置每1秒生成一个Watermark监控和告警 配置监控系统实时监测任务的状态、指标和背压情况。当发现背压问题时及时发送告警并采取相应的措施例如自动调整任务的并行度或资源分配等。使用 MetricGroup 监控。 定位背压 中引用下面文章 https://www.51cto.com/article/686096.html 背感压力Flink背压你了解多少 写的非常好也有部分我暂时没看懂的部分 看到这里的朋友帮忙点下点赞吧~ 这对我非常有帮助感谢~