|
|
1 månad sedan | |
|---|---|---|
| media | 1 månad sedan | |
| LR14-Minor.docx | 1 månad sedan | |
| README.md | 1 månad sedan |
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Новгородский государственный университет имени Ярослава Мудрого Политехнический институт Кафедра Информационных Технологий и Систем
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №14 Разработка распределенной системы обмена сообщениями реального времени (аналог Discord) Minor для кафедры Программного Обеспечения и Вычислительной Техники НовГУ Версия v0.1
Выполнили:
Великий Новгород 2026 г.
В данном документе представлено подробное руководство пользователя распределенной системы обмена сообщениями реального времени «Minor» (версия 0.1). Система разработана для оптимизации информационного обмена на кафедре Информационных Технологий и Систем (ИТИС) НовГУ. Она представляет собой суверенный аналог коммуникационных платформ Discord и Slack, функционирующий на базе микросервисной архитектуры с использованием технологий Go, Cassandra, PostgreSQL, Redis и NATS JetStream.
Руководство пользователя составлено в строгом соответствии с требованиями межгосударственного стандарта ГОСТ 19.502-90 (Единая система программной документации. Описание применения) и регламентирует структуру, системные требования, процессы установки, тестирования и повседневной эксплуатации системы как в десктопной (веб-клиент), так и в мобильной версиях.
Распределенная информационная система реального времени Minor предназначена для использования на кафедре Информационных Технологий и Систем НовГУ имени Ярослава Мудрого. Основными пользователями системы являются:
Программа функционирует в корпоративной сети университета с возможностью внешнего доступа через защищенные каналы связи. Внедрение Minor позволяет исключить риски потери данных в облачных зарубежных сервисах и перевести внутреннее взаимодействие на суверенную инфраструктуру.
Программный продукт предоставляет пользователям следующий набор функциональных возможностей:
Для работы с пользовательскими интерфейсами системы Minor (веб-клиент, мобильное приложение) от пользователя не требуется специальной технической подготовки. Достаточно обладать базовыми навыками работы на персональном компьютере или смартфоне под управлением Android/iOS и уметь использовать стандартные интернет-браузеры.
Для администраторов системы, осуществляющих развертывание, конфигурацию и техническую поддержку серверной части, необходим следующий уровень квалификации:
В состав пакета эксплуатационной документации программного продукта Minor входят следующие документы:
Программа Minor предназначена для автоматизации процессов обмена сообщениями, координации совместной проектной деятельности студентов и проведения оперативных онлайн-консультаций преподавателями в рамках образовательного процесса кафедры ИТИС НовГУ.
Для стабильного функционирования серверной части распределенной системы Minor в условиях средней нагрузки (до 500 активных WebSocket-соединений одновременно) должны быть обеспечены следующие минимальные параметры окружения:
Аппаратные требования к серверу:
Программные требования к серверу:
Требования к клиентским устройствам:
Программное обеспечение Minor поставляется в виде Git-репозитория. В соответствии со структурой проекта, состав дистрибутивного пакета содержит следующие компоненты:
| Путь в репозитории | Описание | Тип |
|---|---|---|
/backend/ |
Корневая директория бэкенд-компонентов системы. | Каталог |
/backend/services/ |
Каталог микросервисов системы (api_gateway, auth_service, chat_service, gateway_service, guild_service, notification_service, presence_service, sfu_service, signal_service, upload_service, user_service). |
Каталог |
/backend/shared/ |
Общие библиотеки (pkg) и protobuf-определения API (api). |
Каталог |
/deploy/ |
Скрипты и файлы для развертывания инфраструктуры. | Каталог |
/deploy/docker-compose.yaml |
Конфигурация Docker Compose для запуска всех сервисов и баз данных. | YAML-файл |
/docs/ |
Техническая документация проекта. | Каталог |
/frontend/ |
Исходный код клиентской веб-панели (React/Vite). | Каталог |
Развертывание программного продукта на сервере производится в соответствии со следующим пошаговым алгоритмом:
Шаг 1. Получение дистрибутива:
Склонируйте репозиторий с исходным кодом в локальную директорию на сервере:
git clone http://172.20.7.4:3000/minor-chat/minor.git /opt/minor
Шаг 2. Конфигурирование системы:
Перейдите в каталог нужного сервиса бэкенда (например, chat_service) и создайте рабочий файл конфигурации окружения .env на основе шаблона:
cd /opt/minor/backend/services/chat_service && cp .env.example .env
Отредактируйте параметры подключения к БД, секретный ключ JWT для шифрования токенов и порты.
Шаг 3. Подготовка баз данных:
Перейдите в каталог развертывания deploy, запустите контейнеры баз данных (PostgreSQL и Cassandra) и примените файлы миграций схем данных:
cd /opt/minor/deploy && docker-compose up -d postgres cassandra
Убедитесь, что порты доступны, и выполните:
migrate -path ../backend/services/chat_service/migrations -database "postgres://postgres:secret@localhost:5432/minor?sslmode=disable" up
Шаг 4. Запуск всех компонентов:
Запустите сборку образов микросервисов и разверните всю распределенную систему Minor:
cd /opt/minor/deploy && docker-compose up --build -d
Для верификации корректности развертывания распределенной системы выполните следующие действия:
Выполните HTTP-запрос к эндпоинту проверки состояния микросервиса авторизации:
curl -i http://localhost:8080/api/v1/auth/health
Сервер должен вернуть статус 200 OK и JSON-тело {"status": "healthy"}.
Проверьте логи шлюза API Traefik на отсутствие критических ошибок маршрутизации:
cd /opt/minor/deploy && docker-compose logs | grep -E "(ERROR|FATAL)"
Убедитесь в активности очередей в брокере сообщений NATS JetStream, выполнив команду в контейнере:
cd /opt/minor/deploy && docker-compose exec nats nats stream info server_messages
Откройте веб-браузер на клиентском компьютере, перейдите по настроенному доменному адресу (например, http://minor.novsu.ru) и убедитесь в отображении стартовой страницы авторизации.
При первом обращении к системе пользователь видит экран авторизации.
| Рисунок 1 – Авторизация |
|---|
![]() |
Главный интерфейс Minor разделен на несколько функциональных зон (Рисунок 2):
| Рисунок 2 – Главный экран | Рисунок 3 – Поиск в главном меню |
|---|---|
![]() |
![]() |
Нажав на иконку настроек профиля, пользователь попадает в меню конфигурации (Рисунок 4). В данном разделе доступны:
| Рисунок 4 – Настройки |
|---|
![]() |
При переходе на один из серверов в левой панели отображается список доступных каналов (Рисунок 5):
#) используются для обмена сообщениями и учебными файлами.| Рисунок 5 – Экран сервера |
|---|
![]() |
Для отправки сообщения выберите нужный текстовый канал, введите текст в поле ввода внизу экрана и нажмите клавишу Enter (или кнопку «Отправить»).
| Рисунок 6 – Личная переписка | Рисунок 7 – Переписка в канале |
|---|---|
![]() |
![]() |
Для корректного выхода из системы и предотвращения несанкционированного доступа к аккаунту с текущего устройства откройте настройки профиля и нажмите на кнопку «Logout» (Рисунок 4). В результате сессия будет аннулирована, а авторизационные токены удалены из памяти устройства.
В процессе эксплуатации распределенной системы Minor возможны сбои программного и аппаратного характера. Ниже представлены сценарии реагирования на нештатные ситуации:
Временная потеря сетевого соединения клиентом:
Отказ базы данных истории сообщений (Apache Cassandra):
Действия администратора: Подключиться к серверу по SSH, проверить логи контейнера базы данных:
docker-compose logs cassandra
В случае необходимости выполнить перезапуск службы:
docker-compose restart cassandra
Истечение времени действия сессии (JWT токена):
Сбой брокера сообщений NATS JetStream:
Для быстрого и эффективного начала работы с системой Minor рекомендуется придерживаться следующих шагов:
#лекции, #лабораторные и голосовой канал Консультации для созвонов с преподавателем).Таблица 2 – Термины и сокращения
| Термин / Сокращение | Расшифровка | Описание |
|---|---|---|
| БД | База Данных | Организованная структура для хранения системной информации. |
| СУБД | Система Управления Базами Данных | Специализированное ПО для управления реляционными и нереляционными данными. |
| JWT | JSON Web Token | Стандарт токенов для безопасной передачи claims (утверждений) между сторонами. |
| NATS JetStream | Брокер сообщений | Распределенная система обмена сообщениями, обеспечивающая доставку событий в реальном времени. |
| UUIDv7 | Universally Unique Identifier | Уникальный 128-битный идентификатор, генерируемый с использованием временной метки (timestamp-first). |
| API | Application Programming Interface | Программный интерфейс взаимодействия между клиентами и бэкенд-службами. |
| gRPC | Google Remote Procedure Call | Фреймворк для быстрого межсервисного взаимодействия с использованием Protocol Buffers. |
| WebSocket | Протокол связи | Протокол двусторонней полнодуплексной связи поверх TCP-соединения для Real-time обмена. |
| Гильдия / Сервер | Тематическое сообщество | Изолированное коммуникационное пространство внутри Minor, содержащее каналы и участников. |
| Номер изменения | Тип изменения | Дата изменения | Описание внесенных изменений | Автор изменения |
|---|---|---|---|---|
| 0.1 | Создание документа | 20.05.2026 | Разработка первичной версии руководства пользователя по ГОСТ 19.502-90. | Ильин Д. А., Распопов С. И. |