🙏 Kafka #4: Как устроены партиции. Сегменты.
Хорошо, мы создали топик, разделили его на партиции. Но вдруг партиция раздулась так сильно, что ему пришла финита! А увеличивать место больше некуда по финансовым соображениям. А вы до этого читали, что из Кафки ничего не удалить! ЧТО ДЕЛОТЬ⁉️
Главное – не переживать! Дело в том, что кафка все пишет в файлы. Но делает это хитро. Когда размер файла достигает 1 Гб или возраст файла достигает недели (что быстрее наступит), брокер создает новый файл и начинает писать в него. С новым файлом произойдет то же самое, когда он увеличится до 1 Гб или проживет неделю.
Такие файлы называются сегМЕНТАМИ. (пояснительный дикпик выше 👆) Ну ладно просто сегментами. И партиция по сути состоит из таких сегментов. Тот файл, в который кафка пишет прямо сейчас называется активным сегментом.
❓И как все это самоочищается?
Вы можете настроить всё так, чтобы эти сегменты понемногу чистились автоматически. Либо, когда место на диске начинает заканчиваться, либо когда возраст сегмента достигает определенного значения. Активный сегмент хрен удалишь, по понятным причинам. (Ну точнее, вы конечно можете его удалить, но если вы так делаете, то либо вы гений, либо у меня для вас нет хороших новостей сегодня)
Разме сегмента можно настроить, как на уровне настроек брокера, так и на уровне настроек топика. Кто кого переопределяет, тут я ХЗ. Выглядят эти настройки вот так:
log.segment. bytes
log.segment. ms
🅰️ Практические выводы:
1. Кафка все таки что-то удаляет, но удаляет сегментами. То есть откусывает кусочки партиции.
2. Настраивать сегменты имеет смысл, если вы понимаете, что у вас в брокере мало памяти, или же, если вы знаете, что данные в топике не нужно хранить дольше определенного срока.
В следующем посте буду разбираться с индексами и тем, как консьюмер ищет сообщения по партициям и их сегментам.
#kafka
Post #105
86
- 🔥 1
- 👏 1