我想了解Kafka中每个消费者组的分区的技术限制,特别是如果使用通配符模式订阅的话。我在很多地方读到过没有限制,但我在真实的世界中观察到了很多限制:
- 在具有1000多个分区的使用者组上,SYNCGROUP消息很容易超过1 MB(默认的最大消息大小),因此您需要不断增加__consumer_offsets主题的max.message.bytes-如果您的使用者侦听10000多个分区,则此类消息的大小可能会超过50 MB!
- 使用通配符模式进行订阅的使用者将发送主题=NONE的METADATA请求,这将给具有数千个分区的Kafka代理带来相当大的负载(特别是如果您也使用ACL),例如,如果您并行启动10个使用者。
关于每个使用者组的最大分区数的任何指导都将是有帮助的。
1条答案
按热度按时间gr8qqesn1#
您应该避免使用大型用户组,因为这会给您的系统和集群带来大量负载。(PC)。通过使用PC,您可以并行处理所有密钥,而不必考虑处理时间。例如,使用PC,您可以在您的代理集群中有10个分区用于分片,而只有3个PC示例,但仍然可以实现非常高的吞吐量-这是由于PC如何分解分区,同时确保按KEY排序。
PC直接解决了这个问题,通过按键对输入分区进行子分区,并并行处理每个键。它还跟踪每个记录的确认。查看Parallel Consumer on GitHub(它是开源的BTW,我是作者)。