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

В разделе описаны основные параметры топиков 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 - максимальная пропускная способность одного консьюмера для одной партиции.

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

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

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

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

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

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

Что это даёт:

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

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