В двух прошлых уроках мы говорили «журнал», «закладка», «сервер» и обходились без точных слов. Так проще начать, но дальше в документации, в выводе команд и на собеседованиях будут только термины Kafka. Их пять, и они вкладываются друг в друга, как адрес: город, улица, дом, квартира.
Склад «Гонца»
Представь склад, куда «Гонец» свозит накладные.
На складе несколько зданий. В каждом здании стоят стеллажи. У каждой темы свой ряд: накладные о заказах в одном ряду, о курьерах в другом. Ряд длинный, поэтому его разбили на несколько полок, и каждую полку обслуживает свой кладовщик: так быстрее раскладывать и искать. На полке папки лежат по порядку, у каждой свой номер: первая, вторая, третья.
Чтобы найти накладную, нужно знать ряд, полку и номер папки. Здание подскажет справочная. А чтобы не потерять накладные при пожаре, копию каждой полки держат в другом здании.
Теперь переведём на язык Kafka.
Пять слов
Топик это ряд на складе: именованный журнал событий одной темы. У «Гонца» будут топики orders, payments и courier-gps. Продюсер пишет в топик, консьюмер читает из топика. То, что в прошлых уроках мы называли журналом событий, в Kafka называется топиком.
Партиция это полка. Топик режут на несколько партиций, и каждая партиция это отдельный лог со своей нумерацией. Порядок записей гарантирован только внутри одной партиции. Зачем резать и как Kafka выбирает партицию для записи, разберём в уроках про партиции и ключи. Пока достаточно знать, что записи с одним ключом, например с одним номером заказа, всегда попадают в одну партицию.
Оффсет это номер папки на полке. Мы встречали его в уроке про лог. Важная деталь: оффсеты считаются в каждой партиции отдельно. В партиции 0 есть запись с оффсетом 0, и в партиции 1 тоже. Поэтому полный адрес записи в Kafka это три части: топик, партиция, оффсет. Например, orders, партиция 1, оффсет 2.
Брокер это здание склада, один сервер Kafka. Он хранит партиции на своём диске, принимает записи от продюсеров и отдаёт их консьюмерам.
Кластер это весь склад, все брокеры вместе. Партиции топика раскладываются по разным брокерам, а копии каждой партиции лежат на нескольких брокерах сразу. Сколько копий держать, задаёт фактор репликации. Одна из копий главная, её называют лидером: в неё пишут продюсеры и из неё читают консьюмеры. Остальные копии повторяют за лидером. Подробно про копии поговорим в уроке про репликацию.
Вот всё вместе:
| Термин | На складе | В «Гонце» |
|---|---|---|
| кластер | весь склад | три сервера Kafka в дата-центре |
| брокер | здание | один из трёх серверов |
| топик | ряд стеллажей | orders, все события о заказах |
| партиция | полка в ряду | orders, партиция 1 |
| оффсет | номер папки на полке | третья запись партиции 1 |
урок из курса
Урок из курса «Data Engineering». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.