Как создать темы в apache kafka?
каков наилучший способ создания тем в Кафке?
- сколько реплик / разделов должно быть определено при создании тем?
в новом API производителя, когда я пытаюсь опубликовать сообщение в несуществующей теме, он первый раз терпит неудачу, а затем успешно публикуется.
- Я хотел бы знать, отношения между репликой, разделами и количеством узлов кластера.
- нужно создать тему до публиковать сообщения?
4 ответов
при запуске брокера kafka вы можете определить набор свойств в conf / server.файл свойств. Этот файл - просто файл свойств key value. Одним из свойств является auto.create.topics.enable
если он установил tot true (по умолчанию), Кафка автоматически создаст тему при отправке сообщения в несуществующую тему.
Все параметры конфигурации вы можете найти здесь
Простое правило Imho для создания тем следующее: количество реплик должно быть не меньше количества узлов, которые у вас есть. Количество темы должны быть множителем числа узлов в кластере, например:
У вас есть 9 узлов кластера
в теме должно быть 9 разделов и 9 реплик или
18 разделов и 9 реплик или
36 разделов и 9 реплик и так далее
номер раздела определяет параллельность темы, поскольку один раздел может использоваться только одним потребителем в группе потребителей. Например, если у вас есть только 10 разделов для темы и 20 потребителей в группе потребителей, 10 потребителей простаивают, не получая никаких сообщений. Количество действительно зависит от вашего приложения, но 1-1000s все разумно.
номер реплики определяется вашим требованием долговечности. Для темы с репликацией фактор N, Кафка может терпеть до N-1 сбоев сервера без потери каких-либо сообщений, зафиксированных в журнале. 3 реплики общую конфигурацию. Конечно, номер реплики должен быть меньше или равен номеру вашего брокера.
Авто.создавать.тематическое направление.включить управление свойствами, когда Kafka включает автоматическое создание темы на сервере. Если задано значение true, то при попытке создания, использования или извлечения метаданных для несуществующей темы приложение Kafka будет автоматически создайте раздел с коэффициентом репликации по умолчанию и количеством разделов. Я бы рекомендовал отключить его в производстве и создать темы заранее.
установить свойство
auto.create.topics.enable=true
на вашем сервере.файл свойств, если у вас есть несколько брокеров, сделайте то же самое для всего сервера*.свойства файла и перезагрузите kafka-сервер.
Но убедитесь, что вы установили разделы для соответствующего номера на сервере*.свойства num.partitions=int
, в противном случае возникнет проблема с производительностью, если вы увеличите разделы позже.
вещи, чтобы иметь в виду
- Больше Разделов Требует Больше Открытых Дескрипторов Файлов
- Дополнительные Разделы Могут Увеличить Недоступность
- больше разделов может увеличить сквозную задержку
как правило, это хорошая идея, чтобы ограничить количество разделов на брокера 100 x b x r
,
где b
- это количество брокеров и r
- Коэффициент репликации.
например: Если у вас есть 9 брокеров/узлов в кластере вашей теме
- 1800 разделов с 3 репликами, или
- 900 разделов и 2 реплики
EDIT: см. статью Как выбрать количество тем / разделов в кластере Кафки? для более подробная информация (ответ был взят оттуда)