Научитесь проектировать системы асинхронного обмена данными:
Kafka, RabbitMQ, ClickHouse — от основ до продакшена
4 модуля, квиз в каждомMiddle+ / SeniorKafka, RabbitMQ, ClickHouseИндивидуально с ментором
Для кого этот курс
Бэкенд-разработчики, проектирующие микросервисные архитектуры с асинхронным обменом данных
DevOps-инженеры, настраивающие инфраструктуру для Kafka и RabbitMQ
Архитекторы, которым нужно выбрать между брокерами и обосновать решение
Что вы получите
Глубокое пониманиеАрхитектура брокеров изнутри: очереди vs журналы, гарантии доставки, партиции
Практические навыкиПоднимете кластер Kafka из 3 узлов, настроите RabbitMQ и ClickHouse в Docker
Выбор технологийНаучитесь выбирать между Kafka и RabbitMQ для конкретных сценариев
Аналитика на ClickHouseКолоночное хранение, MergeTree, обработка терабайтов данных
Программа курса
Основы брокеров сообщений
Producer, Consumer, очереди vs журналы, гарантии доставки
Producer-Consumer модель, Subscription и основные паттерны взаимодействия
Очередь (FIFO, удаление после чтения) vs Журнал (append-only, повторное чтение)
Гарантии доставки: At Most Once, At Least Once, Exactly Once
Dead Letter Queue (DLQ) для обработки проблемных сообщений
Apache Kafka
Архитектура, партиции, репликация и стратегии хранения событий
Pull-модель: потребитель сам запрашивает данные из топика
Топики и партиции: логическое и физическое распределение данных
KRaft вместо Zookeeper для управления кластером
ISR (In-Sync Replicas) и репликация для надёжности
Стратегии хранения событий: один общий топик против топиков по типам сущностей
Партиционирование по event_type, user_id, session_id
Буферизация и sticky sessions при миллионных QPS
RabbitMQ
Очереди, exchanges, bindings, кластеризация
Push-модель доставки сообщений в отличие от Kafka
5 типов Exchange: Direct, Default, Fanout, Topic, Headers
Очереди с TTL, Dead Letter Exchange, durability и auto-delete
Идемпотентность и стратегии повторной отправки
ClickHouse
Колоночное хранение, MergeTree, аналитика на больших данных
Колоночное хранение вместо строкового для аналитических запросов
Гранулы (granules) как минимальные блоки данных
Разреженные индексы: 1 запись на каждые 8192 строки
MergeTree как основной движок хранения
Практические задания
Работа с каждой технологией в Docker и сквозной микросервис в финале
Kafka: поднять кластер, создать топик, разобрать replication factor, min.insync.replicas, cleanup policy и retention; продюсер и консьюмер на Python, Java и Go
RabbitMQ: очереди и маршрутизация через Default, Direct, Topic и Fanout exchange