- •«Московский технический университет связи и информатики»
- •Документация на разработку мультимедийной информационной системы «ImageHub»
- •1. Описание предметной области
- •2. Требования к системе
- •2.1. Требования к структуре и функционированию системы
- •2.2. Функциональные требования
- •2.3. Нефункциональные требования
- •База данных
- •3.1. Архитектура бизнес-процесса получения контента
- •3.2. Процедура авторизации
- •4. База данных
- •4.1. Сущности мультимедийной информационной системы
- •4.2. Атрибуты сущностей
- •4.3. Приведение таблицы к первой нормальной форме
- •4.4. Приведение таблицы ко второй нормальной форме
- •4.5. Приведение таблицы к третьей нормальной форме
- •4.6. Примеры запросов
- •5. Серверная часть системы
- •5.1. Основные компоненты
- •5.2. Ролевая модель и запросы
- •5.3. Приоритетная система очередей
- •5.4. Обработка запросов
- •5.5. Расчет максимальной нагрузки
- •5.6. Механизмы обработки ошибок
- •6. Пользовательский интерфейс
- •7. Результат работы
5. Серверная часть системы
5.1. Основные компоненты
API Gateway - единая точка входа
Request Validator - проверка и парсинг запросов
Priority Router - маршрутизация по очередям
Task Scheduler - планировщик заданий
Worker Pool - пул обработчиков
Business Logic Layer - ядро приложения
Database Layer - работа с данными
Response Builder - формирование ответов
5.2. Ролевая модель и запросы
Роли пользователей:
Гость (Guest) - неавторизованный пользователь
Пользователь (User) - зарегистрированный внешний пользователь
Модератор (Moderator) - внутренний пользователь с ограниченными правами
Администратор (Admin) - внутренний пользователь с полными правами
Система (System) - автоматические системные задачи
Группы запросов по ролям:
Группа A: Базовые запросы (для всех)
A1: Получение главной страницы
A2: Получение информации о системе
Группа B: Аутентификация (Гость → Пользователь)
B1: Регистрация нового аккаунта
B2: Вход в систему (аутентификация)
B3: Выход из системы
B4: Восстановление пароля
Группа C: Работа с контентом (Пользователь)
C1: Загрузка изображений
C1.1: Валидация файла
C1.2: Сохранение на диск
C1.3: Запись метаданных в БД
C2: Управление изображениями
C2.1: Просмотр списка своих изображений
C2.2: Удаление изображения
C2.3: Редактирование описания
C3: Публичный доступ
C3.1: Просмотр чужих публичных профилей
C3.2: Поиск пользователей
C3.3: Просмотр публичных галерей
Группа D: Администрирование (Модератор/Администратор)
D1: Просмотр статистики системы
D2: Управление пользователями
D2.1: Блокировка пользователя
D2.2: Разблокировка пользователя
D2.3: Просмотр активности пользователя
D3: Модерация контента
D3.1: Просмотр загруженного контента
D3.2: Удаление недопустимого контента
D3.3: Жалобы от пользователей
Группа E: Системные операции (Система/Администратор)
E1: Резервное копирование данных
E2: Очистка временных файлов
E3: Мониторинг производительности
E4: Проверка целостности системы
5.3. Приоритетная система очередей
Уровни приоритетов:
Приоритет 1 - системный:
Запросы от системных процессов
Критические операции (резервное копирование)
Макс. время обработки: 60 секунд
Приоритет 2 – Административный:
Запросы администраторов
Операции модерации
Макс. время обработки: 10 секунд
Приоритет 3 – Загрузка контента:
Загрузка файлов пользователями
Макс. время обработки: 5 секунд
Приоритет 4 – Просмотр контента:
Просмотр изображений
Поиск пользователей
Макс. время обработки: 3 секунд
Приоритет 5 – Аутентификация:
Регистрация, вход, выход
Макс. время обработки: 2 секунд
Правила определения приоритета:
Если user_role = "system" → Приоритет 1
Если user_role = "admin" → Приоритет 2
Если action = "upload_image" → Приоритет 3
Если action содержит "view" или "search" → Приоритет 4
Во всех остальных случаях → Приоритет 5
5.4. Обработка запросов
Ниже представлена блок-схема обработки запросов (рисунок 5-6).
Рисунок 5 – Обработка запросов
Рисунок 6 – Обработка запросов
Алгоритм работы планировщика:
Цикл обработки запросов
1. Проверить количество свободных воркеров
2. Если есть свободные воркеры:
2.1. Проверить Очередь 1 (системные)
2.2. Если не пуста: взять первый запрос → отдать воркеру
2.3. Иначе: проверить Очередь 2 (админские)
2.4. Если не пуста: взять первый запрос → отдать воркеру
2.5. Иначе: проверить Очередь 3 (загрузка)
2.6. Если не пуста: взять первый запрос → отдать воркеру
2.7. Иначе: проверить Очередь 4 (просмотр)
2.8. Если не пуста: взять первый запрос → отдать воркеру
2.9. Иначе: проверить Очередь 5 (аутентификация)
2.10. Если не пуста: взять первый запрос → отдать воркеру
3. Если все очереди пусты: ждать 100мс → повторить с шага 1
