Topics
Создание темы (topic)
| Поле | Тип данных | Описание |
| Topic Name | Строка | Название темы. |
| Number of partitions | Целое число |
Количество разделов — управление производительностью и масштабируемостью кластера. Единицы параллелизма в Kafka. Разделы определяют скорость и масштабирование.
Пример: для 10 разделов можно запустить до 10 потребителей, и каждый будет обрабатывать свой раздел. Если потребителей больше, чем разделов, то лишние потребители будут простаивать и тратить ресурсы впустую . Дополнительные факторы
Практические рекомендации
Выбор "Number of partitions" — это всегда компромисс между желаемой производительностью, требованиями к порядку данных и операционными затратами на поддержку кластера. |
| Cleanup policy |
Список.
|
Политика управления сроком жизни данных. По умолчанию delete. Политика delete (Удаление) Удаление старых данных по истечении заданного времени или при превышении лимита размера. Как это работает: удаление когда старше retention.ms (по умолчанию 7 дней), или когда общий размер раздела превышает retention.bytes. Происходит в фоновом режиме с заданным интервалом. Когда применять: потоки событий и логов, где важна вся история. Например, логи приложений, метрики, трекинговые события. Здесь каждое сообщение самоценно, и старые данные со временем теряют актуальность . Политика compact (Сжатие) Эта политика работает по принципу "сохранить только последнее известное состояние" для каждого ключа сообщения . Как это работает: Вместо удаления по времени, Kafka в фоновом режиме "сжимает" лог. Для каждого уникального ключа (key) в разделе она оставляет только последнее по времени сообщение, а все промежуточные удаляет . Важное условие: Сообщения в таких топиках обязаны иметь ключ (key). Сообщения без ключа будут удалены при сжатии . Когда применять: Это идеальный инструмент для топиков, которые хранят состояние или конфигурации. Например: Таблица с актуальными данными пользователей (адрес, почта) . Информация о текущем статусе заказа. Список доступных товаров на складе. Внутренний топик Kafka __consumer_offsets, где хранятся текущие смещения потребителей, по умолчанию использует именно эту политику . 🤝 Комбинированная политика delete,compact Вы можете применить обе политики одновременно, указав их через запятую: cleanup.policy=delete,compact . В этом случае Kafka сначала удаляет старые данные по времени/размеру, а затем сжимает оставшийся лог. Это полезно, когда вам нужно, с одной стороны, ограничить общий объем данных, а с другой — гарантировать, что для каждого ключа в пределах этого срока хранения сохранится только последнее значение . Изменяемость: Политику можно изменить для уже существующего топика без перезапуска кластера . Смена политики: Переключение с delete на compact возможно, но требует осторожности. При включении сжатия сообщения без ключа будут потеряны . Производительность: Сжатие требует дополнительных ресурсов ЦП и ввода-вывода, так как в фоне работает специальный "чистильщик" (Log Cleaner) . При неправильной настройке он может повлиять на производительность брокера. 💎 Как выбрать? Руководствуйтесь простым вопросом: важна ли для вас полная история событий или только их текущее состояние? Если история — выбирайте delete. Если состояние — выбирайте compact. |

No comments to display
No comments to display