Условие
Разработать систему для обработки и регистрации входящих запросов от внешних сервисов, связанных с изменением состояния ресурсов (например, платежных поручений), с учетом высокой нагрузки и отказоустойчивости.
- Сценарий: Внешние сервисы (N штук) отправляют запросы на изменение состояния ресурса.
- Нагрузка: 5000 платежных поручений в день.
- Проблема: На конец дня 50 поручений остались в статусе "создано" (Created), хотя ожидался другой статус.
- Требования: прием запросов, асинхронная обработка, отказоустойчивость (обработка дублей), масштабируемость, диагностика сбоев.
Разработать архитектуру системы обработки запросов
Использовать брокер сообщений (например, RabbitMQ) для очереди запросов, реализовать приемник с проверкой уникальности сообщений по ID, применить асинхронную обработку (asyncio или celery), добавить мониторинг статусов и логирование.
2. Почему часть поручений осталась в статусе "создано" и как это предотвратить?
Возможные причины: дублирование сообщений из брокера или ошибки в сервисе обработки. Решение: внедрение идемпотентности, механизмы повторных попыток (retry) и улучшенное логирование для диагностики.
Дополнительно
Обсуждались архитектурные решения для обеспечения отказоустойчивости и масштабируемости системы обработки платежных поручений. Кандидат рассматривал причины сбоев, связанные с дублированием сообщений в брокере и ошибками в сервисе обработки.