Перейти к основному содержимому
DevScallix

Kafka и Event-Driven Architecture: Модули

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

  1. 01

    Базовая модель Kafka

    Понимаем, что даёт модель на основе лога и чего она не даёт.

    • Topic, partition, segment и модель лога
    • Репликация, leader и ISR
    • Retention и log compaction
    • Batching producer, acks и задержка
    • Чем Kafka отличается от очереди

    Лабораторная: Создать topic на локальном кластере и понаблюдать, как параметры partition и retention меняют поведение.

  2. 02

    Порядок и партиционирование

    Порядок сохраняется только внутри partition; превращаем этот факт в проектное решение.

    • Ключ сообщения и partitioner
    • Hot partition и перекос распределения
    • Выбор числа partition и последствия его увеличения позже
    • Как нарушается порядок (retry, несколько producer)
    • Выбор ключа на основе предметной области

    Лабораторная: Выбрать ключ, сохраняющий порядок событий одного клиента, и воспроизвести случай нарушения порядка.

  3. 03

    Consumer group и rebalancing

    Как consumer делят partition между собой и к чему это может привести.

    • Consumer group и назначение partition
    • Стратегии offset commit
    • Виды rebalance и cooperative rebalancing
    • max.poll.interval и проблема медленного consumer
    • Consumer lag и предел параллелизма

    Лабораторная: Замедлить consumer до шторма rebalance, найти причину в логах и метриках и исправить.

  4. 04

    Семантика доставки и идемпотентное потребление

    Дубликаты неизбежны; учимся писать consumer, устойчивые к ним.

    • At-most-once, at-least-once, exactly-once
    • Идемпотентный producer и транзакции Kafka
    • Идемпотентность на стороне consumer: уникальный ключ и дедупликация
    • Retry topic и dead letter topic
    • Обработка poison message

    Лабораторная: Написать consumer, получающий одно сообщение дважды, и тестом доказать, что эффект не применяется повторно.

  5. 05

    Transactional outbox

    Устраняем несогласованность между записью в базу и публикацией события.

    • Проблема dual write
    • Таблица outbox и polling publisher
    • Подход на CDC (концепция Debezium)
    • Очистка outbox и порядок
    • Паттерн inbox

    Лабораторная: Построить outbox в сервисе заказов и показать, что событие не теряется при падении сервиса и дубликаты обрабатываются.

  6. 06

    Моделирование событий и эволюция схем

    События — долгоживущие контракты; учимся менять их, не ломая потребителей.

    • Event, command и state transfer
    • Именование и состав событий
    • Avro/Protobuf и Schema Registry
    • Правила обратной и прямой совместимости
    • Версионирование и жизнь со старыми событиями

    Лабораторная: Добавить и удалить поле в существующей схеме события и понаблюдать, какое изменение отклонит проверка совместимости.

  7. 07

    Choreography и orchestration

    Сравниваем два способа координировать многошаговый бизнес-процесс через события.

    • Choreography: преимущества и скрытая связность
    • Orchestration: центральный контроль и его цена
    • Видимость процесса и отладка
    • Компенсация и обработка timeout

    Лабораторная: Построить один и тот же бизнес-процесс двумя подходами и сравнить простоту трассировки и изменения.

  8. 08

    Эксплуатация и мониторинг

    Определяем, что нужно отслеживать, чтобы надёжно эксплуатировать систему на Kafka.

    • Consumer lag и алертинг
    • Метрики broker и topic
    • Планирование ёмкости и цена retention
    • Replay: повторная обработка событий
    • Основы безопасности: аутентификация и ACL

    Лабораторная: Настроить dashboard и правило алерта по consumer lag и проверить их сценарием, создающим lag.

Вернуться на страницу программыЗадать вопрос о плане