Раздел 26 · Data Engineering

Топик, партиция, оффсет, брокер, кластер

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В двух прошлых уроках мы говорили «журнал», «закладка», «сервер» и обходились без точных слов. Так проще начать, но дальше в документации, в выводе команд и на собеседованиях будут только термины Kafka. Их пять, и они вкладываются друг в друга, как адрес: город, улица, дом, квартира.

Склад «Гонца»

Представь склад, куда «Гонец» свозит накладные.

На складе несколько зданий. В каждом здании стоят стеллажи. У каждой темы свой ряд: накладные о заказах в одном ряду, о курьерах в другом. Ряд длинный, поэтому его разбили на несколько полок, и каждую полку обслуживает свой кладовщик: так быстрее раскладывать и искать. На полке папки лежат по порядку, у каждой свой номер: первая, вторая, третья.

Чтобы найти накладную, нужно знать ряд, полку и номер папки. Здание подскажет справочная. А чтобы не потерять накладные при пожаре, копию каждой полки держат в другом здании.

Теперь переведём на язык Kafka.

Пять слов

Топик это ряд на складе: именованный журнал событий одной темы. У «Гонца» будут топики orders, payments и courier-gps. Продюсер пишет в топик, консьюмер читает из топика. То, что в прошлых уроках мы называли журналом событий, в Kafka называется топиком.

Партиция это полка. Топик режут на несколько партиций, и каждая партиция это отдельный лог со своей нумерацией. Порядок записей гарантирован только внутри одной партиции. Зачем резать и как Kafka выбирает партицию для записи, разберём в уроках про партиции и ключи. Пока достаточно знать, что записи с одним ключом, например с одним номером заказа, всегда попадают в одну партицию.

Оффсет это номер папки на полке. Мы встречали его в уроке про лог. Важная деталь: оффсеты считаются в каждой партиции отдельно. В партиции 0 есть запись с оффсетом 0, и в партиции 1 тоже. Поэтому полный адрес записи в Kafka это три части: топик, партиция, оффсет. Например, orders, партиция 1, оффсет 2.

Брокер это здание склада, один сервер Kafka. Он хранит партиции на своём диске, принимает записи от продюсеров и отдаёт их консьюмерам.

Кластер это весь склад, все брокеры вместе. Партиции топика раскладываются по разным брокерам, а копии каждой партиции лежат на нескольких брокерах сразу. Сколько копий держать, задаёт фактор репликации. Одна из копий главная, её называют лидером: в неё пишут продюсеры и из неё читают консьюмеры. Остальные копии повторяют за лидером. Подробно про копии поговорим в уроке про репликацию.

Вот всё вместе:

ТерминНа складеВ «Гонце»
кластервесь складтри сервера Kafka в дата-центре
брокерзданиеодин из трёх серверов
топикряд стеллажейorders, все события о заказах
партицияполка в рядуorders, партиция 1
оффсетномер папки на полкетретья запись партиции 1

урок из курса

Урок из курса «Data Engineering». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.