Стоимость неиспользованной темы / раздела Кафки - PullRequest
1 голос
/ 14 января 2020

При проектировании конвейера потоковой обработки какие затраты могут быть понесены, если бы у меня было много тем, в которых был бы хотя бы один раздел, но потенциально в него не входили бы данные?

Например, с одним потребителем и Я мог бы выбрать один «мегапопулярный c», который содержит все данные и много разделов, или я мог бы разделить эти данные (по владельцу, учетной записи или пользователю и т. Д. c.) На множество тем с помощью по умолчанию один раздел. Я беспокоюсь о втором случае, что было бы много тем / разделов, которые не видели бы данных. Итак, стоит ли этот неиспользованный раздел чего-либо или нет неоплаченного топи c.

Ответы [ 2 ]

1 голос
/ 15 января 2020

Прежде всего, нет разницы между одним жирным топи c и множеством разделов и более чем одним топи c, который содержит несколько разделов. Topi c просто для логического различия между событиями. Кафка заботится только о количестве разделов.

Во-вторых, наличие большого количества разделов может привести к некоторым проблемам:

  • Слишком много открытых файлов:

Каждый раздел отображается в каталог в файловой системе в брокере. В этом каталоге журналов будет два файла (один для индекса, а другой для фактических данных) на сегмент журнала.

  • Больше разделов требует больше памяти как на стороне брокера, так и на стороне потребителя:

Брокеры выделяют буфер размером replica.fetch.max.bytes для каждого реплицируемого раздела. Если для replica.fetch.max.bytes установлено значение 1 МБ, а у вас 1000 разделов, требуется около 1 ГБ ОЗУ.

  • Дополнительные разделы могут увеличить недоступность:

Если брокер, являющийся контроллером, вышел из строя, то zookeeper выбирает другого брокера в качестве контроллера. В этот момент вновь избранный брокер должен прочитать метаданные для каждого раздела из Zookeeper во время инициализации.

Например, если в кластере Kafka имеется 10 000 разделов, а для инициализации метаданных из ZooKeeper требуется 2 мс на раздел, это может добавить еще 20 секунд к окну недоступности.

Вы можете получить дополнительную информацию по этим ссылкам:
https://www.confluent.io/blog/how-choose-number-topics-partitions-kafka-cluster/ https://docs.cloudera.com/documentation/kafka/latest/topics/kafka_performance.html

1 голос
/ 15 января 2020

Предполагая, что упомянутые темы не уплотнены, есть начальные накладные расходы на сохранение любых первоначально созданных данных, но после чего пустая топи c просто

  1. метаданные в zookeeper
  2. метаданные в любом координаторе групп потребителей
  3. пустые каталоги на диске

Для первых двух из-за большого количества тем может увеличиться задержка запроса, что приведет к нездоровому кластеру.

...