Background Jobs
Зачем
Функции процесса выполнения фоновых задач:
- Инициализация: процесс инициализации задачи, который может включать в себя определение ее параметров, установку соединения с базой данных и другое.
- Выполнение: фактическое выполнение задачи. Это включает в себя обработку данных, отправку электронной почты, генерацию отчетов и другое.
- Отслеживание статуса: процесс отслеживания статуса задачи, чтобы знать, на каком этапе она находится, была ли она выполнена успешно или произошла ошибка.
- Управление ошибками: процесс обработки и регистрации возможных ошибок, которые могут возникнуть в процессе выполнения задачи.
- Мониторинг: процесс мониторинга состояния системы и проверки наличия возможных проблем, таких как падение производительности или высокая загрузка процессора.
- Резервное копирование: создание резервных копий данных во время выполнения задачи, чтобы иметь возможность восстановления системы после возможной ошибки или сбоя.
- Отправка уведомлений: отправка уведомлений пользователю или администратору о состоянии задачи и ее выполнении.
- Планирование: процесс планирования задач на выполнение в будущем.
- Отчетность: создание отчетов о выполнении задач для анализа производительности и выявления проблем в работе системы.
- Завершение: завершение работы задачи и очистка ресурсов после ее выполнения
Требования:
- Создать классы-команды, каждый из которых будет выполнять определенное действие. Класс-команда должен содержать логику работы по обработке задачи.
- Создать класс CommandBus (шину команд), который будет отвечать за регистрацию и выполнение команд.
- В классе CommandBus добавить метод register на регистрацию команд.
- Добавить в класс CommandBus метод handle для выполнения соответствующей команды.
- Разработать механизм очереди, который будет хранить незавершенные задачи и обеспечивать их последовательную обработку.
- Использовать паттерн Observer для отслеживания завершения задачи.
- Реализовать функцию повторного запуска незавершенных задач в случае ошибок или исключительных ситуаций.
- Добавить возможность контроля за процессом выполнения задач с помощью системы логирования и мониторинга.
- Предусмотреть возможность расширения системы новыми типами команд.
- Обеспечить безопасность данных в процессе выполнения задач.
Критерии приемки решения задачи обработки фоновых задач могут включать:
- Корректность: задача должна выполняться корректно и соответствовать спецификации требований, предъявленных к системе.
- Надежность: система должна быть стабильной и надежной, чтобы минимизировать возможность ошибок и сбоев.
- Производительность: задачи должны быть выполнены в установленные сроки и не приводить к замедлению работы системы или других задач.
- Масштабируемость: система должна быть способна работать с большим объемом данных и обрабатывать множество задач параллельно.
- Безопасность: система должна обеспечивать безопасность передаваемых данных и защищать от несанкционированного доступа или взлома.
- Логирование: наличие логирования для отслеживания процесса выполнения задачи и возможности анализа проблем.
- Отчетность: наличие отчетов о выполнении задачи, где можно проверить состояние и результаты работы.
- Службы поддержки: наличие службы поддержки и мониторинга для оперативной реакции на проблемы и внесения улучшений в работу системы.
Паттерны
Реализация паттерна Command и Command Bus
- Feature
- Retry
- Priorited
- Logging
- Graceful Shutdown
- Scalling Worker
- Shedule
- Event Pre\Post\Error
- Rate Limit
- Types (LIFO, Delayed, Prioritized, Repeatable)
- Canceling task
- Disable Job
- Distributed Lock only one handle allow in cluster server mode
Частный случай паттерна - Cron Job.