一个Java Kafka Consumer需要多少操作系统资源?

问题描述 投票:2回答:1

我想使用成千上万的KafkaConsumer。例如,我需要100_000消费者一些建筑模式。我在想,可以吗?或者我应该重构我的系统并在整个系统中使用少量消费者(例如,10消费者而不是100_000)。

所以,我的问题是:

  1. 在KafkaConsumer中有connection pool,或者每个消费者都创建了自己与kafka经纪人的联系?
  2. 在KafkaConsumer中有thread pool,或者每个消费者创建自己的线程(我希望,它不会)。
  3. 每个KafkaConsumer的平均内存消耗是多少?
  4. 您如何看待这种架构模式?
java apache-kafka threadpool connection-pooling kafka-consumer-api
1个回答
1
投票

1,2)消费者从作为分区领导者的经纪人之一请求元数据。每个消费者都能够从单个线程处理所有IO,因为Java客户端是围绕由poll()驱动的事件循环设计的。您也可以构建多线程消费者,但您需要处理偏移管理。有关Java客户端实现的更多详细信息,请参阅Confluent's documentation

3)根据Apache Kafka and Confluent Enterprise Reference architecture

消费者每个消费者至少使用2MB,而经纪人的大量响应(典型的是突发流量)则高达64MB

4)你提到的消费者数量巨大,所以你需要一个很好的理由来吸引10万消费者。这取决于场景,但即使Netflix也应该使用比这少得多的东西。

© www.soinside.com 2019 - 2024. All rights reserved.