1

我有一个由多个消费者(同一组)使用的多分区主题。我的目标是最大化消费处理,即任何消费者都可以消费来自任何分区的消息。

我知道这看起来不可能,因为只有一个消费者可以从分区中消费。

是否可以使用 REST 代理来实现这一点?例如,轮询所有 Proxy 消费者实例。

谢谢。

4

2 回答 2

1

默认情况下, Kafka 消费者被配置为从尽可能多的分区中消费。如果您在同一主题上有多个同时使用的消费者,使用相同的消费者组 ID,Kafka 将自动将卷分配给所有这些消费者。这是设计使然,因此您可以通过添加更多消费者来快速扩展消费。

您可以选择指示 kafka 使用者仅从特定分区中使用,甚至包括到一个,但您必须明确地执行此操作。

于 2020-01-17T17:56:05.433 回答
0

最大化消费处理的最佳方法是让一个消费者(同一组)从每个分区读取。

作为改进措施,您还可以查看:

  • 分区的数量:您可以增加它们以便能够添加更多的消费者并增加吞吐量
  • 消息如何在分区之间平衡,错误的键选择可能导致消息全部到达同一个分区

另外提醒一下,分区和消费者组只允许一个消费者,以避免并发问题。如果 2 个消费者提交不同的偏移量会发生什么?-> 您最终会阅读两次消息或跳过其中一些消息!

于 2020-01-17T18:12:12.187 回答