【问题标题】:Partition specific flink kafka consumer分区特定的 flink kafka 消费者
【发布时间】:2018-12-03 19:48:20
【问题描述】:

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

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

附图显示了程序的高级架构

【问题讨论】:

    标签: apache-kafka apache-flink


    【解决方案1】:

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

    1) kafka partitions == flink parallelism:这种情况是理想的,因为每个消费者负责一个分区。如果你的消息在 partition 之间是平衡的,那么工作就会均匀地分布在 flink operator 之间;

    2) kafka partitions

    3) kafka partitions > flink parallelism:这种情况下,有些实例会处理多个partitions。再一次,您可以使用重新平衡在工作人员之间平均传播消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-15
      • 2017-01-04
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2018-10-03
      相关资源
      最近更新 更多