云星数据---Apache Flink实战系列(精品版)】:Flink其他操作及内容003-flink的背压机制001
2017-11-22 09:44
926 查看
《flink中的背压的处理原理》
什么是背压问题
流系统中消息的处理速度c52a
跟不上消息的发送速度,导致消息的堆积。如果系统能感知消息堆积,并调整消息发送的速度。
使消息的处理速度和发送速度相协调就是有背压感知的系统。背压如果不能得到正确地处理,可能会导致资源被耗尽或者
甚至出现更糟的情况导致数据丢失。flink就是一个有背压感知的基于流的分布式消息处理系统。
举例说明:
1.正常情况:消息处理速度>=消息的发送速度,不发生消息拥堵,系统运行流畅
2.异常情况:消息处理速度< 消息的发送速度,发生了消息拥堵,系统运行不畅。
消息拥堵可以采取两种方案
a.将拥堵的消息直接删除,将会导致数据丢失,在精确到要求高的场景非常不合适
b.将拥堵的消息缓存起来,并告知消息发送者减缓消息发送的速度。
3.处理方法:将缓冲区持久化,以方便在处理失败的情况下进行数据重放。
有些source本身提供持久化保证,可以优先考虑。例如: Apache Kafka是一个很不错的选择,可以背压从sink到source
的整个pipeline,同时对source进行限流来适配整个pipeline中最慢组件的速度,从而获得系统的稳定状态。
flink中的背压
Flink使用分布式阻塞队列来作为有界缓冲区。如同Java里通用的阻塞队列跟处理线程进行连接一样,一旦队列达到容量上限,一个相对较慢的接受者将拖慢发送者。
举例说明:
图中有一个简单的flow,它由两个task组成
1、记录“A”进入Flink,然后被Task 1处理
2、Task 1处理后的结果被序列化进缓冲区
3、task 2从缓冲区内读取一些数据,缓冲区内将有更多的空间。
4、如果task 2处理的较慢,task1的缓存区将很快填满。发送速度随之下降。
注意:为了记录能被Flink处理,缓冲区必须是可用的
相关文章推荐
- 云星数据---Apache Flink实战系列(精品版)】:Flink其他操作及内容002-Flink基于流的windowAndFunction操作001
- 云星数据---Apache Flink实战系列(精品版)】:Flink其他操作及内容004-flink的背压机制002
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战003-Flink基于流的window操作001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战005-Flink基于流的window操作003
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用006-Slot和Parallelism的深入分析001
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用021-Flink中OutFormat设置(Scala版)001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战006-DataStream与MySql自定义sink和source(Scala版)001
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink实战基础0016--IDEA搭建非maven管理的集成开发环境001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战008-DataStream与MySql自定义sink和source(Scala版)003
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战001--DateSet实用API详解001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战004-Flink基于流的window操作002
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战009-DataStream与MySql自定义sink和source(Java版)001
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用003-Flink的内存管理003
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用019-Flink中参数传递和容错设定003
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用023-Flink中OutFormat设置(Scala版)003
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战011-DataStream与MySql自定义sink和source(Java版)003
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用004-Flink的作业调度情况001
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink实战基础006--flink分布式部署001
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink实战基础0018--IDEA搭建非maven管理的集成开发环境003
- 【云星数据---Apache Flink实战系列(精品版)】:Flink基础--001:flink介绍