Сколько ресурсов операционной системы необходимо для одного потребителя Java Kafka? - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу использовать сотни тысяч KafkaConsumer .Например, мне нужно 100_000 потребителей для какого-то архитектурного паттерна.Я думаю, это нормально?Или я должен реорганизовать свою систему и использовать несколько потребителей для всей системы (например, 10 потребителей вместо 100_000).

Итак, мои вопросы:

  1. Есть ли connection pool в KafkaConsumer, или каждый потребитель создает свое собственное соединение с брокерами Kafka?
  2. Есть ли thread pool в KafkaConsumer, или каждый потребитель создает собственный поток (надеюсь, что нет).
  3. Каково среднее потребление памяти на KafkaConsumer?
  4. Что вы думаете о таком архитектурном паттерне?

1 Ответ

0 голосов
/ 28 февраля 2019

1,2) Потребители запрашивают метаданные у одного из посредников, который является лидером раздела.Каждый потребитель может обрабатывать все операции ввода-вывода из одного потока, поскольку клиенты Java спроектированы вокруг цикла обработки событий, который управляется poll().Вы также можете создавать многопоточных потребителей, но вам нужно позаботиться о смещении управления.Обратитесь к документации Confluent для более подробной информации о реализации Java-клиентов.

3) В соответствии с Apache Kafka и эталонной архитектурой Confluent Enterprise ,

Потребители используют не менее 2 МБ на каждого потребителя и до 64 МБ в случае больших ответов отброкеры (типично для бурного трафика)

4) Число упомянутых вами потребителей огромно, поэтому вам понадобится очень веская причина, чтобы обратиться к 100 000 потребителей.Хотя это зависит от сценария, но даже Netflix должен использовать намного меньше, чем это.

...