Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. FastStream: курс по асинхронной коммуникации
DevOps / Мониторинг·16 тем·111 вопросов·уровень Middle, Senior

FastStream: курс по асинхронной коммуникации

Полное руководство по FastStream — от основ messaging до production-паттернов. Изучите работу с RabbitMQ, Kafka, Redis и NATS, построите надёжные микросервисы и освоите лучшие практики асинхронной коммуникации в Python.

Начать курс

FastStream: асинхронная коммуникация в Python

FastStream делает с брокерами примерно то, что FastAPI сделал с HTTP: обработчик — это функция с типизированными аргументами, валидация приходит из Pydantic, зависимости — через Depends, а разница между RabbitMQ, Kafka, Redis и NATS прячется за одним декоратором. Удобно ровно до первой аварии — поэтому в курсе разбирается и то, что спрятано под декоратором.

Шестнадцать тем. Сначала общая модель messaging и запуск брокеров в Docker, затем по теме на каждый брокер, потому что абстракция не отменяет их различий: AMQP с обменниками и привязками; Kafka как распределённый лог с партициями, группами и offset'ами; Redis pub/sub с честным разбором, когда он подходит под очередь, а когда теряет сообщения; NATS с subjects, queue groups и JetStream для персистентности.

Дальше общая для всех брокеров часть: публикация с заголовками и подтверждениями, подписчики с фильтрами, пакетной обработкой и ручным acknowledgment, типизация сообщений через Pydantic-модели и обработка невалидного входа, внедрение зависимостей в обработчики, тесты с TestClient и мок-брокером — без поднятия инфраструктуры.

Эксплуатационная часть: middleware для логов и метрик, повторы, dead letter queue, circuit breaker; RPC и request-reply поверх очереди с таймаутами; масштабирование, пулы воркеров и обратное давление; Prometheus, трассировка и деплой в Kubernetes. Последняя тема — эволюция форматов сообщений: версионирование, совместимость, schema registry и миграция без остановки.

Нужен опыт с asyncio; знакомство с каким-нибудь брокером желательно, но курс объясняет модель каждого с нуля.

  1. 1

    Введение в FastStream и асинхронную коммуникацию

    Базовые концепции messaging-систем: брокеры, очереди, pub/sub, RPC. Зачем нужен FastStream и как он упрощает работу с очередями.

    6 вопросов
  2. 2

    Установка и настройка окружения

    Быстрый старт: установка FastStream, настройка проекта, запуск брокеров в Docker, первый hello-world.

    7 вопросов
  3. 3

    Основы работы с RabbitMQ

    AMQP-модель: exchanges, queues, bindings, routing keys. Типы exchanges и сценарии использования.

    7 вопросов
  4. 4

    Основы работы с Apache Kafka

    Распределённый лог событий: topics, partitions, consumer groups, offset management. Отличия Kafka от традиционных брокеров.

    7 вопросов
  5. 5

    Основы работы с Redis Pub/Sub

    Лёгкий messaging: каналы, publish/subscribe, паттерны. Когда Redis подходит для очередей, а когда нет.

    7 вопросов
  6. 6

    Основы работы с NATS

    Высокопроизводительная коммуникация: subjects, queue groups, wildcards. JetStream для персистентности.

    7 вопросов
  7. 7

    Публикация сообщений (Publishing)

    Отправка сообщений во все брокеры: базовая публикация, кастомизация заголовков, delivery modes, подтверждение отправки.

    7 вопросов
  8. 8

    Подписка и обработка сообщений (Subscribers)

    Обработчики сообщений: декораторы, фильтры, batching, acknowledgment, ручное управление подтверждением.

    7 вопросов
  9. 9

    Валидация данных с Pydantic

    Типизация сообщений: Pydantic-модели, валидация входящих данных, кастомные валидаторы, обработка ошибок валидации.

    7 вопросов
  10. 10

    Dependency Injection в FastStream

    Внедрение зависимостей в обработчики: Depends, контекст, базы данных, кэш, внешние сервисы.

    7 вопросов
  11. 11

    Тестирование FastStream приложений

    Unit- и интеграционные тесты: TestClient, моки брокеров, тестирование publishers и subscribers, fixtures.

    7 вопросов
  12. 12

    Middleware и обработка ошибок

    Перехватчики сообщений: логирование, метрики, retry-логика, dead letter queues, circuit breaker, alerting.

    7 вопросов
  13. 13

    Продвинутые паттерны: RPC, Request-Reply

    Синхронные вызовы через очереди: RPC в RabbitMQ, request-reply в NATS, таймауты, обработка ошибок.

    7 вопросов
  14. 14

    Масштабирование и производительность

    Горизонтальное масштабирование: конкурентность, worker pools, оптимизация потребления, backpressure.

    7 вопросов
  15. 15

    Production: мониторинг, логирование, деплой

    Observability: Prometheus, Grafana, структурированное логирование, трассировка, деплой в Kubernetes.

    7 вопросов
  16. 16

    Миграции и версионирование схем

    Эволюция форматов сообщений: версионирование, совместимость, миграции без downtime, schema registry.

    7 вопросов
  17. Зачёт

    Доступен после всех тем (0 из 16)

  18. Экзамен

    Доступен после зачёта

28 / 28

Брокер сообщений (Message Broker)

Основные концепции

Промежуточное ПО (middleware), которое управляет передачей сообщений между приложениями. Брокер принимает сообщения от отправителей (publishers) и доставляет их получателям (subscribers), обеспечивая надёжность, масштабируемость и асинхронность коммуникации.

Пример

RabbitMQ, Apache Kafka, Redis Pub/Sub, NATS — популярные брокеры сообщений, поддерживаемые FastStream.

Связанные термины

Издатель (Publisher)

Основные концепции

Компонент системы, который отправляет (публикует) сообщения в брокер. Издатель не знает о том, кто получит сообщение — он только указывает целевую очередь или топик.

Пример

from faststream import FastStream app = FastStream() @app.publisher("queue_name") async def publish_message(): await app.publish("Hello!", "queue_name")

Связанные термины

Подписчик (Subscriber)

Основные концепции

Компонент системы, который получает (потребляет) сообщения из брокера. Подписчик регистрирует обработчик (handler) на определённую очередь или топик и автоматически получает сообщения.

Пример

from faststream import FastStream app = FastStream() @app.subscriber("queue_name") async def handle_message(msg: str): print(f"Received: {msg}")

Связанные термины

Очередь (Queue)

Основные концепции

Структура данных в брокере, которая хранит сообщения до их доставки потребителю. Очереди обеспечивают буферизацию и гарантируют, что сообщения не будут потеряны, даже если потребитель временно недоступен.

Пример

В RabbitMQ очередь binding-ится к exchange через routing key. В Kafka роль очереди играет partition внутри topic.

Связанные термины

Pub/Sub (Publish-Subscribe)

Основные концепции

Паттерн асинхронной коммуникации, при котором издатели отправляют сообщения в каналы (топики), а подписчики получают сообщения из тех каналов, на которые они подписались. Издатели и подписчики не знают друг о друге.

Пример

Redis Pub/Sub: издатель публикует в канал 'notifications', все подписчики этого канала получают сообщение. Kafka использует похожую модель с topics.

Связанные термины

AMQP (Advanced Message Queuing Protocol)

Брокеры сообщений

Открытый стандарт протокола обмена сообщениями, реализованный RabbitMQ. AMQP определяет модель с exchanges, queues, bindings и routing keys, обеспечивая гибкую маршрутизацию сообщений.

Пример

В RabbitMQ exchange типа 'direct' маршрутизирует сообщения в очереди по точному совпадению routing key: `orders → orders_queue`, `payments → payments_queue`.

Связанные термины

RabbitMQ

Брокеры сообщений

Популярный open-source брокер сообщений, реализующий протокол AMQP. Поддерживает различные типы exchanges (direct, fanout, topic, headers), подтверждение доставки (ack/nack), dead letter queues и плагины.

Пример

from faststream.rabbit import RabbitBroker broker = RabbitBroker("amqp://localhost:5672") @broker.subscriber("orders", "orders_queue") async def handle_order(order: dict): ...

Связанные термины

Apache Kafka

Брокеры сообщений

Распределённая платформа потоковой обработки событий. Kafka хранит сообщения в виде неизменяемого лога (topic partition), позволяя множеству потребителей читать данные независимо и со своей скоростью.

Пример

from faststream.kafka import KafkaBroker broker = KafkaBroker("localhost:9092") @broker.subscriber("orders", group_id="order-service") async def handle_order(order: dict): ...

Связанные термины

Топик (Topic)

Брокеры сообщений

Логический канал или категория сообщений в брокере. В Kafka topic разделён на partitions для параллелизма. В Redis Pub/Sub topic — это имя канала. В RabbitMQ аналогом является exchange.

Пример

Топик 'user.events' может содержать сообщения о регистрации, логине, изменении профиля. Потребители подписываются на весь топик или его подмножество.

Связанные термины

Партиция (Partition)

Брокеры сообщений

Физический сегмент топика в Kafka. Каждый partition — упорядоченный лог сообщений. Партиции позволяют масштабировать потребление: разные потребители обрабатывают разные партиции параллельно.

Пример

Топик 'orders' с 6 партициями может обрабатываться 6 потребителями в consumer group, каждый читает свою партицию.

Связанные термины

Группа потребителей (Consumer Group)

Брокеры сообщений

Набор потребителей в Kafka, которые совместно обрабатывают сообщения топика. Каждая партиция назначается ровно одному потребителю внутри группы, обеспечивая балансировку нагрузки.

Пример

Consumer group 'order-processors' с 3 потребителями обрабатывает топик 'orders' с 6 партициями: каждый потребитель получает 2 партиции.

Связанные термины

Redis Pub/Sub

Брокеры сообщений

Встроенный механизм публикации-подписки в Redis. Простой и лёгкий, но без персистентности: если подписчик недоступен, сообщения теряются. Подходит для real-time уведомлений и чатов.

Пример

from faststream.redis import RedisBroker broker = RedisBroker("redis://localhost:6379") @broker.subscriber("notifications") async def notify(msg: str): ...

Связанные термины

NATS

Брокеры сообщений

Высокопроизводительный брокер сообщений с простой моделью subjects. Поддерживает queue groups для балансировки, wildcards для подписки и JetStream для персистентности.

Пример

from faststream.nats import NatsBroker broker = NatsBroker("nats://localhost:4222") @broker.subscriber("orders.new") async def handle_order(order: dict): ...

Связанные термины

RPC (Remote Procedure Call)

Паттерны и архитектуры

Паттерн синхронного вызова удалённой процедуры через очередь сообщений. Отправитель публикует запрос и ждёт ответа в специальной reply-очереди. Таймауты и обработка ошибок критичны.

Пример

# Вызов RPC result = await broker.publish( "calculate", "rpc_queue", reply_to="reply_queue", correlation_id="123" )

Связанные термины

Request-Reply

Паттерны и архитектуры

Паттерн коммуникации, при котором отправитель запрашивает данные и ожидает ответ. Реализуется через RPC в RabbitMQ или встроенный request-reply в NATS. Отличается от fire-and-forget pub/sub.

Пример

NATS request-reply: `await broker.request('service.calculate', payload)` — автоматически создаёт временный reply subject и ждёт ответ.

Связанные термины

Dead Letter Queue (DLQ)

Паттерны и архитектуры

Очередь для сообщений, которые не удалось обработать после нескольких попыток. DLQ позволяет изолировать проблемные сообщения и проанализировать их позже, не блокируя основную обработку.

Пример

В RabbitMQ: очередь 'orders.dlq' с TTL и auto-bind к основной очереди. В FastStream: `retry_queue` и `dead_letter_queue` параметры.

Связанные термины

Идемпотентность

Паттерны и архитектуры

Свойство операции давать одинаковый результат при повторном выполнении. Критично для обработки сообщений, так как брокеры могут доставлять сообщения повторно (at-least-once delivery).

Пример

Обработка платежа идемпотентна, если повторный запрос с тем же `payment_id` не создаёт второй платёж. Реализуется через deduplication таблицу.

Связанные термины

FastStream App

FastStream API

Основной объект приложения FastStream, который инициализирует брокера, регистрирует обработчики и управляет жизненным циклом. Аналогичен FastAPI app.

Пример

from faststream import FastStream from faststream.rabbit import RabbitBroker broker = RabbitBroker("amqp://localhost") app = FastStream(broker) @broker.subscriber("orders") async def handle(order: dict): ...

Связанные термины

@subscriber декоратор

FastStream API

Декоратор FastStream для регистрации обработчика сообщений. Указывает очередь/топик и параметры потребления. Аналогичен @app.route в FastAPI.

Пример

@broker.subscriber( "orders", "orders_queue", batch=True, max_workers=10 ) async def handle_orders(orders: list[dict]): ...

Связанные термины

@publisher декоратор

FastStream API

Декоратор FastStream для объявления publisher'а. Позволяет отправлять сообщения из обработчиков или других частей приложения.

Пример

@broker.publisher("notifications") @broker.subscriber("orders") async def process_order(order: dict): await broker.publish({"order_id": order["id"]}, "notifications")

Связанные термины

Pydantic-модели в FastStream

FastStream API

Использование Pydantic-классов для типизации и валидации сообщений. FastStream автоматически парсит входящие JSON в модели и валидирует их.

Пример

from pydantic import BaseModel class Order(BaseModel): id: int amount: float @broker.subscriber("orders") async def handle(order: Order): # Автоматическая валидация ...

Связанные термины

Dependency Injection (DI)

FastStream API

Механизм внедрения зависимостей в обработчики FastStream через `Depends`. Позволяет инжектить базы данных, кэш, сервисы и контекст вызова.

Пример

from faststream import Depends async def get_db(): async with Database() as db: yield db @broker.subscriber("orders") async def handle(order: dict, db=Depends(get_db)): ...

Связанные термины

TestClient

FastStream API

Утилита FastStream для тестирования без реального брокера. Эмулирует публикацию и потребление сообщений в памяти, ускоряя unit-тесты.

Пример

from faststream.testing import TestClient async with TestClient(app) as client: await client.publish("test", "queue") # assertions

Связанные термины

Middleware (Промежуточное ПО)

Production и эксплуатация

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

Пример

@broker.middleware def log_message(message): logger.info(f"Processing: {message}") return message

Связанные термины

Offset (Смещение)

Production и эксплуатация

Позиция потребителя в partition Kafka — номер последнего прочитанного сообщения. Offset коммитится, чтобы при рестарте продолжить с того же места.

Пример

Потребитель прочитал сообщения 0–99, offset=99 закоммичен. После рестарта чтение продолжится с сообщения 100.

Связанные термины

Backpressure (Противодавление)

Production и эксплуатация

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

Пример

В FastStream: `max_workers` ограничивает конкурентность. В Kafka: потребитель не коммитит offset, пока не обработает batch.

Связанные термины

Schema Registry

Production и эксплуатация

Централизованное хранилище схем сообщений (Avro, Protobuf, JSON Schema). Обеспечивает совместимость при эволюции форматов и версионировании.

Пример

Confluent Schema Registry для Kafka: перед публикацией сообщение валидируется против схемы, проверяется backward compatibility.

Связанные термины

Observability (Наблюдаемость)

Production и эксплуатация

Практика мониторинга системы через метрики, логи и трассировку. Для messaging критичны: latency, throughput, error rate, lag потребителей.

Пример

Prometheus + Grafana: метрики `faststream_messages_processed_total`, `faststream_processing_duration_seconds`. Jaeger для distributed tracing.

Связанные термины

Частые вопросы о курсе «FastStream: курс по асинхронной коммуникации»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «FastStream: курс по асинхронной коммуникации»?

Курс включает 16 тем и 111 вопросов с разбором ответа. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «FastStream: курс по асинхронной коммуникации»?

Маршрут охватывает уровни Middle, Senior. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «FastStream: курс по асинхронной коммуникации» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «FastStream: курс по асинхронной коммуникации» бесплатный?

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