Перейти к основному содержимому

Рекомендации по настройке топика (тариф Base)

Последнее изменение: 30 июля 2026

В разделе описаны основные параметры топиков Apache Kafka, влияющие на производительность, отказоустойчивость и параллелизм обработки данных.

Базовые параметры топика​

Имя топика​

При именовании топика применяются следующие правила:

Допустимые символы:

  • первый символ — буква (a–z, A–Z), цифра (0–9) или подчёркивание (_);
  • последующие символы — буквы, цифры, точки (.), дефисы (-) или подчёркивания;
  • длина имени — от 3 до 200 символов.

Ограничения:

  • имя топика нельзя изменить после создания;
  • не рекомендуется использовать имена, различающиеся только точкой и подчёркиванием (например, topic_1 и topic.1): Kafka не различает такие названия;
  • имена с двойным подчёркиванием в начале (например, __consumer_offsets) зарезервированы для внутренних топиков Kafka.

Количество партиций (partitions)​

Партиции определяют уровень параллелизма при чтении и записи данных. Количество партиций выбирается исходя из требуемой пропускной способности.

Правила:

  • количество партиций можно только увеличивать (уменьшение невозможно);
  • при наличии нескольких брокеров рекомендуется выбирать число партиций, кратное количеству брокеров — для равномерного распределения нагрузки;
  • рекомендуется мониторить отставание потребителей (consumer lag) и при необходимости увеличивать число партиций.

Расчет количества партиций: Количество партиций определяется по формуле:

Partitions = max(NP, NC)

где:

  • NP = TT / TP - количество необходимых продюсеров;
  • NC = TT / TC - количество необходимых консьюмеров;
  • TT - общая ожидаемая пропускная способность системы;
  • TP - максимальная пропускная способность одного продюсера для одной партиции;
  • TC - максимальная пропускная способность одного консьюмера для одной партиции.
Пример
  • TT = 1000 МБ/с

Тест показал: TP = 20 МБ/с (один продюсер в одну партицию)

  • NP = 1000 / 20 = 50 продюсеров

Значит, нужно минимум 50 партиций (чтобы 50 продюсеров не ждали друг друга).

  • Но если TC = 10 МБ/с (консьюмер потребляет медленно), то:
  • NC = 1000 / 10 = 100 консьюмеров
  • Partitions = max(50, 100) = 100

Фактор репликации (replication-factor)​

Фактор репликации определяет количество копий данных, хранящихся на разных брокерах.

Рекомендация для production-сред: установите значение 3.
При этом каждая партиция получает одного лидера и две реплики, что обеспечивает отказоустойчивость при выходе одного брокера.

Дополнительные параметры конфигурации​

Параметр min.insync.replicas (минимальное количество синхронизированных реплик) работает вместе с настройкой продюсера acks=all. Он задаёт, сколько реплик (включая лидера) должны подтвердить запись, чтобы она считалась успешной.

Для production-кластера с фактором репликации = 3
Установите min.insync.replicas = 2.

Что это даёт:

  • надёжность — данные точно попали минимум на два брокера;
  • доступность — если один брокер упадёт, запись продолжится.
Примечание

Не рекомендуется устанавливать значение равным фактору репликации (например, min.insync.replicas = 3). Если один брокер перезагрузится, запись в топик станет невозможной — система будет ждать подтверждения от всех трёх реплик, а одна недоступна.