分区特定的Flink Kafka使用者

时间:2018-06-25 09:18:26

标签: apache-kafka apache-flink

我创建了一个流程序,用于使用flink和kafka流mongodb oplog。根据与Flink支持团队的讨论,不能通过kafka分区来保证流的顺序。我已经创建了N个kafka分区,并希望为每个分区创建N个flink kafka消费者,因此至少应在特定分区中保持流的顺序。请建议我可以创建特定于分区的flink kafka使用者吗?

我正在使用env.setParallelism(N)进行并行处理。

所附图片显示了程序enter image description here

的高级体系结构

1 个答案:

答案 0 :(得分:3)

经过大量研究,我根据自己的问题找到了解决方案。由于无法通过kafka分区进行全局排序,因此我创建了N个具有flink并行性的kafka分区,并编写了一个自定义kafka分区程序,它将覆盖默认的kafka分区策略,并根据自定义分区程序中指定的逻辑将记录发送到特定分区。这样可以确保特定的消息始终进入相同的分区。在设置flink并行性时,请牢记以下几点。

1)kafka分区== flink并行性:这种情况是理想的,因为每个使用者都照顾一个分区。如果您的消息在分区之间保持平衡,则工作将平均分配给flink运算符;

2)kafka分区

3)kafka分区> flink并行性:在这种情况下,某些实例将处理多个分区。再一次,您可以使用重新平衡功能将消息均匀地传播到各个工作人员。