flink并⾏度与kafa分区(partition)设置
flink并⾏度与kafa分区(partition)设置
flink Connector-kafka
//TODO⽂章 connector系统⽂章,等待编写
原理
采⽤取模运算;平衡 kafka partition与并⾏度关系。
取模运算原理见取模运算理解
计算公式
kafkaPartition mod 并⾏度总数 = 分配到并⾏度中的partition
例⼦:partition 个数为 6;并⾏度为 3
partition取模取模值并⾏度分配partition-0partition-0 mod 3 = 00parallel-0 partition-1partition-1 mod 3 = 11
parallel-1 partition-2partition-2 mod 3 = 22parallel-2 partition-3partition-3 mod 3 = 00parallel-0 partition-4partition-4 mod 3 = 11parallel-1 partition-5partition-5 mod 3 = 22parallel-2
图⽰如下:
kafka为什么那么快partition取模.png
如上分析,如果并⾏度 ⼤于 partition总数,那么多余的并⾏度分配不到 partition,该并⾏度也就不会有数据如下图:3个kafka partition,flink设置4个并⾏度为例,编号为3的并⾏度将获取不到数据
partition取模1.png
源码分析
由于源码⽐较多,为了代码便于阅读,只抽取关键的代码
FlinkKafkaConsumerBase

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。