代码之家  ›  专栏  ›  技术社区  ›  Max

一个Java卡夫卡用户需要多少操作系统资源?

  •  0
  • Max  · 技术社区  · 6 年前

    我想用几十万 KafkaConsumer . 例如,我需要 100_000 一些架构模式的使用者。我在想,可以吗?或者我应该重构我的系统,对整个系统使用很少的消费者(例如, 10 消费者而不是 100000 )

    所以,我的问题是:

    1. connection pool 在卡夫卡经纪人中,还是每个消费者都与卡夫卡经纪人建立了自己的联系?
    2. thread pool 在kafkaconsumer中,或者每个消费者创建自己的线程(我希望不是这样)。
    3. 每个kafkaconsumer的平均内存消耗是多少?
    4. 你觉得这种建筑模式怎么样?
    0 回复  |  直到 6 年前
        1
  •  1
  •   Giorgos Myrianthous    6 年前

    1,2)使用者从一个代理请求元数据,该代理是分区的负责人。每个客户都能够处理来自单个线程的所有IO,因为Java客户端是围绕一个事件循环来设计的,该事件循环由 poll() . 您还可以构建多线程的消费者,但您需要注意偏移管理。参照 Confluent's documentation 有关Java客户端实现的更多细节。

    3)根据 Apache Kafka and Confluent Enterprise Reference architecture ,

    每个用户至少使用2MB,在以下情况下最多使用64MB 经纪人的大量回应(典型的是繁忙的交通)

    4)你提到的消费者数量巨大,所以你需要一个很好的理由去吸引10万消费者。不过,这取决于具体情况,但即便是Netflix也应该使用的数量要比这少得多。