Рекомендации по настройке топика (тариф 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). Если один брокер перезагрузится, запись в топик станет невозможной — система будет ждать подтверждения от всех трёх реплик, а одна недоступна.