За три урока мы выяснили, что «Гонцу» нужен поток событий (урок 1), что источники и потребители лучше связать через общий лог (урок 2) и что поток окупается там, где бюджет задержки измеряется секундами (урок 3). Перед тем как открыть Kafka, поставим её на карту: рядом с ней живут похожие инструменты, и новички их постоянно путают.
Почтовый ящик, газета, архив и библиотека
Есть четыре способа хранить и передавать бумаги.
Почтовый ящик. Тебе пришло письмо, ты его забрал, и в ящике его больше нет. Письмо адресовано одному получателю и читается один раз.
Подшивка газет. Номера выходят по порядку, каждый новый ложится сверху. Любой может прийти и прочитать подшивку с любого номера. Прочитанный номер никуда не девается, его прочтёт и следующий читатель. Старые номера раз в год выбрасывают.
Картотека. В ней лежит актуальная карточка на каждого клиента. Переехал клиент, карточку переписали. Найти можно любого по фамилии.
Библиотечный архив. Всё, что когда-либо было, разложено по полкам так, чтобы удобно отвечать на вопросы вроде «сколько книг вышло в 1990 году».
Эти четыре образа соответствуют четырём видам инструментов.
Четыре вида инструментов
Очередь сообщений это почтовый ящик. Сообщение ждёт, пока его заберёт один из обработчиков, и после подтверждения исчезает. Самый известный пример RabbitMQ. Очередь хороша для задач вида «сделай это один раз»: отправь письмо, сгенерируй чек.
Лог событий это подшивка газет. События дописываются в конец, каждый читатель помнит, до какого места дочитал, а прочитанное остаётся для следующих. Это Kafka. Похоже устроены потоки Redis, только они живут в памяти одного сервера.
База данных это картотека. В ней лежит текущее состояние: у заказа 9001 статус «доставлен», у курьера 15 рейтинг 4,8. Ищут по любому полю, меняют на месте. Это PostgreSQL, с которым ты знаком по блоку про PostgreSQL.
Хранилище данных это архив. В него сливают историю из разных источников, чтобы Отто мог спросить «как менялось время доставки по зонам за полгода». Подробнее в уроке про DWH.
урок из курса
Урок из курса «Data Engineering». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.