Kafka и Event-Driven Architecture
Важные внутренности Kafka, семантика доставки и надёжный event-driven дизайн.
Эта программа планируется и ещё не включена в расписание. Дата, цена и группа не объявлены. Если вы оставите интерес, мы свяжемся, когда программа будет запланирована, или чтобы обсудить индивидуальный формат.
Цель
Программа нацелена не просто на использование Kafka, а на понимание её поведения, достаточное для построения надёжной event-driven системы. Порядок, семантика доставки, идемпотентное потребление, transactional outbox и эволюция схем изучаются на реалистичных сбоях. Эксплуатация и мониторинг рассматриваются как часть дизайна.
Для кого
- Backend-разработчики, уже знакомые со Spring Boot и обменом сообщениями
- Кандидаты на уровень senior, участвующие в проектировании событийных систем
- Те, кто сталкивается с дубликатами, потерями и задержками в существующем использовании Kafka
- Инженеры, которым нужно связывать микросервисы асинхронно
Для кого не подходит
- Те, кто впервые встречает обмен сообщениями: сначала укрепите основы Spring Boot и сервисов
- Те, кто хочет сделать администрирование кластера Kafka основной профессией
- Те, кто собирается применять Kafka там, где хватило бы простой очереди: программа ставит под вопрос и этот выбор
Требования
- Опыт написания сервисов на Spring Boot
- Понимание транзакций и согласованности баз данных
- Настройка локального окружения в Docker
- Общие знания о микросервисах или асинхронном взаимодействии
Что вы сможете делать
Что вы сможете делать
- Объяснить, как topic, partition и репликация влияют на порядок и пропускную способность
- Сохранять порядок через выбор ключа
- Предсказывать поведение consumer group, offset commit и rebalancing
- Различать реальный смысл семантик at-most-once, at-least-once и exactly-once
- Писать consumer, устойчивый к дубликатам (идемпотентный)
- Обеспечивать согласованность базы и Kafka через transactional outbox
- Обратно совместимо менять схему события с помощью Schema Registry
- Настроить мониторинг и алертинг по consumer lag и другим метрикам
Ни одна образовательная программа не может гарантировать трудоустройство или повышение.
Учебный план
Учебный план
- 01
Базовая модель Kafka
Понимаем, что даёт модель на основе лога и чего она не даёт.
- Topic, partition, segment и модель лога
- Репликация, leader и ISR
- Retention и log compaction
- Batching producer, acks и задержка
- Чем Kafka отличается от очереди
Практическая лабораторная: Создать topic на локальном кластере и понаблюдать, как параметры partition и retention меняют поведение.
- 02
Порядок и партиционирование
Порядок сохраняется только внутри partition; превращаем этот факт в проектное решение.
- Ключ сообщения и partitioner
- Hot partition и перекос распределения
- Выбор числа partition и последствия его увеличения позже
- Как нарушается порядок (retry, несколько producer)
- Выбор ключа на основе предметной области
Практическая лабораторная: Выбрать ключ, сохраняющий порядок событий одного клиента, и воспроизвести случай нарушения порядка.
- 03
Consumer group и rebalancing
Как consumer делят partition между собой и к чему это может привести.
- Consumer group и назначение partition
- Стратегии offset commit
- Виды rebalance и cooperative rebalancing
- max.poll.interval и проблема медленного consumer
- Consumer lag и предел параллелизма
Практическая лабораторная: Замедлить consumer до шторма rebalance, найти причину в логах и метриках и исправить.
- 04
Семантика доставки и идемпотентное потребление
Дубликаты неизбежны; учимся писать consumer, устойчивые к ним.
- At-most-once, at-least-once, exactly-once
- Идемпотентный producer и транзакции Kafka
- Идемпотентность на стороне consumer: уникальный ключ и дедупликация
- Retry topic и dead letter topic
- Обработка poison message
Практическая лабораторная: Написать consumer, получающий одно сообщение дважды, и тестом доказать, что эффект не применяется повторно.
- 05
Transactional outbox
Устраняем несогласованность между записью в базу и публикацией события.
- Проблема dual write
- Таблица outbox и polling publisher
- Подход на CDC (концепция Debezium)
- Очистка outbox и порядок
- Паттерн inbox
Практическая лабораторная: Построить outbox в сервисе заказов и показать, что событие не теряется при падении сервиса и дубликаты обрабатываются.
- 06
Моделирование событий и эволюция схем
События — долгоживущие контракты; учимся менять их, не ломая потребителей.
- Event, command и state transfer
- Именование и состав событий
- Avro/Protobuf и Schema Registry
- Правила обратной и прямой совместимости
- Версионирование и жизнь со старыми событиями
Практическая лабораторная: Добавить и удалить поле в существующей схеме события и понаблюдать, какое изменение отклонит проверка совместимости.
- 07
Choreography и orchestration
Сравниваем два способа координировать многошаговый бизнес-процесс через события.
- Choreography: преимущества и скрытая связность
- Orchestration: центральный контроль и его цена
- Видимость процесса и отладка
- Компенсация и обработка timeout
Практическая лабораторная: Построить один и тот же бизнес-процесс двумя подходами и сравнить простоту трассировки и изменения.
- 08
Эксплуатация и мониторинг
Определяем, что нужно отслеживать, чтобы надёжно эксплуатировать систему на Kafka.
- Consumer lag и алертинг
- Метрики broker и topic
- Планирование ёмкости и цена retention
- Replay: повторная обработка событий
- Основы безопасности: аутентификация и ACL
Практическая лабораторная: Настроить dashboard и правило алерта по consumer lag и проверить их сценарием, создающим lag.
Практические задания
- Выбор ключа и тест порядка
- Отчёт о диагностике проблемы rebalance
- Идемпотентный consumer с тестом дубликатов
- Реализация outbox
- Изменение схемы с проверкой совместимости
Результаты для портфолио
- Учебная event-driven система с outbox и идемпотентными consumer
- Набор тестов, покрывающий сценарии дубликатов и сбоев
- Каталог событий и документ о правилах эволюции схем
- Dashboard consumer lag и runbook
Как оценивается обучение
- Защита дизайна событий
- Code review ментором
- Письменный разбор сценария сбоя
- Запись решения о выборе choreography или orchestration
Инструменты и технологии
- Apache Kafka
- Spring for Apache Kafka
- Schema Registry
- Avro или Protobuf
- PostgreSQL
- Debezium (на уровне концепции)
- Docker Compose
- Testcontainers
- Prometheus и Grafana
Последовательность уровней
- До
- До этого: Microservices и Distributed Systems или опыт работы с многосервисными системами.
- После
- После: System Design.
- Длительность и формат
- Длительность и формат ещё не определены; программа планируется и не включена в расписание.
Частые вопросы
Частые вопросы
Доступна ли программа сейчас?
Нет. Программа планируется и пока не стоит в расписании. Даты и цены не объявлены. Вы можете оставить интерес или запросить консультацию.
Нужен ли предварительный опыт с Kafka?
Нет. Достаточно общего представления об обмене сообщениями и опыта со Spring Boot; модель Kafka объясняется в первом модуле.
Возможен ли exactly-once на самом деле?
При определённых условиях внутри Kafka — да, но не по всей цепочке с внешними системами. Программа объясняет его пределы и практическую альтернативу — идемпотентное потребление.
Есть ли сертификат или обещание работы?
Нет. Ни сертификат, ни результат не обещаются. Оценка проходит в форме защит дизайна и обратной связи ментора и носит рекомендательный характер.
Статьи по теме программы
- Распределённые системыFailure handling in distributed systems
- Событийная архитектураEvent-driven architecture trade-offs
- Распределённые системыIdempotency patterns for safe retries
- Событийная архитектураDelivery semantics, idempotent consumers and the outbox pattern
- KafkaKafka fundamentals for backend engineers