我想使用成千上万的KafkaConsumer。例如,我需要100_000
消费者一些建筑模式。我在想,可以吗?或者我应该重构我的系统并在整个系统中使用少量消费者(例如,10
消费者而不是100_000
)。
所以,我的问题是:
connection pool
,或者每个消费者都创建了自己与kafka经纪人的联系?thread pool
,或者每个消费者创建自己的线程(我希望,它不会)。1,2)消费者从作为分区领导者的经纪人之一请求元数据。每个消费者都能够从单个线程处理所有IO,因为Java客户端是围绕由poll()
驱动的事件循环设计的。您也可以构建多线程消费者,但您需要处理偏移管理。有关Java客户端实现的更多详细信息,请参阅Confluent's documentation。
3)根据Apache Kafka and Confluent Enterprise Reference architecture,
消费者每个消费者至少使用2MB,而经纪人的大量响应(典型的是突发流量)则高达64MB
4)你提到的消费者数量巨大,所以你需要一个很好的理由来吸引10万消费者。这取决于场景,但即使Netflix也应该使用比这少得多的东西。