我知道每个分区都分配给一个Kafka使用者(在一个使用者组内),但是一个Kafka使用者可能同时使用多个分区。如果每个都有一个与分区的开放连接,那么我可以想象每个消费者打开数万个连接。如果这是真的,那么在决定分区数时似乎需要注意,不是吗?
答案 0 :(得分:2)
我假设您在询问官方Java客户端。第三方客户可以做其他事情。
KafkaConsumer每个分区没有网络连接。正如你所暗示的,这不会很好地扩展。
相反,KafkaConsumer与每个代理/节点都有连接,这些代理/节点是它正在消耗的分区的领导者。使用相同连接传输具有相同领导者的分区的数据。它还为其组使用协调器的附加连接。所以在最坏的情况下它可以拥有<集群中的经纪人> + 1个与Kafka集群的连接。
看看NetworkClient.java,您会看到每个节点(经纪人)处理连接