Практическое задание#

Цель задания#

Закрепить понимание:

  • Зачем в распределённых системах используется асинхронность
  • Какие проблемы она решает и какие создаёт
  • Как архитектурно выбирать между синхронным и асинхронным взаимодействием
  • Какие гарантии доставки реально существуют и как с ними жить

Домены

  • Заказы
  • Оплата
  • Каталог
  • Доставка
  • Уведомления

Синхронное vs асинхронное взаимодействие#

Для каждого действия определите:

  • Синхронное или асинхронное взаимодействие
  • Кратко объясните почему

Действия

  • Создание заказа пользователем
  • Резервирование товара на складе
  • Списание денег
  • Отправка email / push-уведомления
  • Обновление аналитики продаж

События как факты#

Проанализируйте и составьте ответы на вопросы:

  • Какие события (events) вы бы ввели в системе заказов?
  • Какие данные обязательно должны быть в каждом событии?
  • Что не должно находиться внутри события и почему?

Пример формата ответа:

OrderCreated
- order_id
- user_id
- created_at
- event_id

Проблема дублей сообщений#

Опишите:

  • Почему в асинхронных системах невозможно гарантировать exactly-once delivery
  • Что означает гарантия at-least-once
  • Какие проблемы возникнут, если обработчик не идемпотентен

Контакты#

Поддержать автора