Tidak Ada Deskripsi

sudo-odner 80fcf6d5c6 👹 1 bulan lalu
media 80fcf6d5c6 👹 1 bulan lalu
LR14-Minor.docx 80fcf6d5c6 👹 1 bulan lalu
README.md 80fcf6d5c6 👹 1 bulan lalu

README.md

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Новгородский государственный университет имени Ярослава Мудрого Политехнический институт Кафедра Информационных Технологий и Систем

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №14 Разработка распределенной системы обмена сообщениями реального времени (аналог Discord) Minor для кафедры Программного Обеспечения и Вычислительной Техники НовГУ Версия v0.1

Выполнили:

  • Студент Ильин Д.А. группы № 3093
  • Студент Распопов С.И. группы № 3093

Великий Новгород 2026 г.


Аннотация

В данном документе представлено подробное руководство пользователя распределенной системы обмена сообщениями реального времени «Minor» (версия 0.1). Система разработана для оптимизации информационного обмена на кафедре Информационных Технологий и Систем (ИТИС) НовГУ. Она представляет собой суверенный аналог коммуникационных платформ Discord и Slack, функционирующий на базе микросервисной архитектуры с использованием технологий Go, Cassandra, PostgreSQL, Redis и NATS JetStream.

Руководство пользователя составлено в строгом соответствии с требованиями межгосударственного стандарта ГОСТ 19.502-90 (Единая система программной документации. Описание применения) и регламентирует структуру, системные требования, процессы установки, тестирования и повседневной эксплуатации системы как в десктопной (веб-клиент), так и в мобильной версиях.


Содержание


1. Введение

1.1. Область применения

Распределенная информационная система реального времени Minor предназначена для использования на кафедре Информационных Технологий и Систем НовГУ имени Ярослава Мудрого. Основными пользователями системы являются:

  • Студенты бакалавриата и магистратуры, координирующие выполнение групповых проектов и лабораторных работ.
  • Преподавательский состав кафедры, использующий систему для проведения консультаций, выдачи заданий и контроля успеваемости.
  • Администраторы кафедры, управляющие распределением прав и доступом к учебным ресурсам.

Программа функционирует в корпоративной сети университета с возможностью внешнего доступа через защищенные каналы связи. Внедрение Minor позволяет исключить риски потери данных в облачных зарубежных сервисах и перевести внутреннее взаимодействие на суверенную инфраструктуру.

1.2. Краткое описание возможностей

Программный продукт предоставляет пользователям следующий набор функциональных возможностей:

  • Аутентификация и авторизация: безопасный вход в систему по корпоративным учетным записям, защита сессий при помощи токенов JWT (Access и Refresh).
  • Управление серверами: организация изолированных пространств для различных академических дисциплин, курсов или проектных групп.
  • Каналы коммуникации: деление серверов на текстовые каналы (для обсуждений, публикации учебных материалов и файлов) и голосовые каналы (для проведения онлайн-семинаров и аудиосвязи в реальном времени с минимальной задержкой).
  • Обмен мгновенными сообщениями: отправка текстовой информации (длиной до 2000 символов) по протоколу WebSocket с задержкой доставки менее 100 мс.
  • Профили пользователей: кастомизация личных данных (ФИО, академическая группа, аватар) и системных настроек (звуки, уведомления, выбор темы оформления).
  • Уведомления и статусы: автоматическое отслеживание статуса присутствия участников ("В сети" / "Не в сети") и индикация непрочитанных сообщений в каналах.

1.3. Уровень подготовки пользователя

Для работы с пользовательскими интерфейсами системы Minor (веб-клиент, мобильное приложение) от пользователя не требуется специальной технической подготовки. Достаточно обладать базовыми навыками работы на персональном компьютере или смартфоне под управлением Android/iOS и уметь использовать стандартные интернет-браузеры.

Для администраторов системы, осуществляющих развертывание, конфигурацию и техническую поддержку серверной части, необходим следующий уровень квалификации:

  • Системное администрирование операционных систем семейства Linux (Ubuntu Server).
  • Навыки контейнеризации приложений с использованием Docker и оркестрации через Docker Compose.
  • Базовые знания языков запросов SQL (для PostgreSQL) и CQL (для Apache Cassandra).
  • Опыт конфигурирования брокеров сообщений (NATS) и шлюзов API (Traefik).

1.4. Перечень эксплуатационной документации

В состав пакета эксплуатационной документации программного продукта Minor входят следующие документы:

  • Техническое задание (ТЗ-Minor.docx): определяет исходные цели разработки и технические рамки.
  • Спецификация требований к программному обеспечению (LAB7-Minor.docx): детально описывает логику работы микросервисов и схемы баз данных.
  • Руководство пользователя (LR14-Minor.docx): текущий документ, содержащий руководство по установке и эксплуатации.

2. Назначение и условия применения

2.1. Назначение программы

Программа Minor предназначена для автоматизации процессов обмена сообщениями, координации совместной проектной деятельности студентов и проведения оперативных онлайн-консультаций преподавателями в рамках образовательного процесса кафедры ИТИС НовГУ.

2.2. Системные требования и условия применения

Для стабильного функционирования серверной части распределенной системы Minor в условиях средней нагрузки (до 500 активных WebSocket-соединений одновременно) должны быть обеспечены следующие минимальные параметры окружения:

Аппаратные требования к серверу:

  • Процессор: x86_64 или ARM64 с тактовой частотой не менее 2.5 ГГц, количество ядер — не менее 4.
  • Оперативная память: не менее 8 Гб (рекомендуется 16 Гб для стабильной работы СУБД Cassandra в Java Virtual Machine).
  • Дисковая подсистема: твердотельный накопитель SSD объемом не менее 50 Гб со скоростью чтения/записи не ниже 500 Мб/с.
  • Сетевой интерфейс: гигабитный сетевой адаптер (1 Gbps Ethernet).

Программные требования к серверу:

  • Операционная система: Ubuntu Server 22.04 LTS или аналогичный Linux-дистрибутив (ядро версии 5.15 и выше).
  • Платформа контейнеризации: Docker Engine версии 24.0.0 и выше.
  • Инструмент оркестрации: Docker Compose v2.20.0 и выше.

Требования к клиентским устройствам:

  • Персональный компьютер: ОС Windows 10/11, macOS 12+ или Linux; установленный браузер Google Chrome 110+, Mozilla Firefox 100+, Apple Safari 15+ с поддержкой HTML5 и WebSockets.
  • Мобильное устройство: смартфон под управлением Android 10.0+ или iOS 15.0+; стабильное подключение к сети Интернет или интрасети НовГУ (Wi-Fi/4G).

3. Подготовка к работе

3.1. Состав и содержание дистрибутивного носителя

Программное обеспечение 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). Каталог

3.2. Порядок загрузки данных и программ

Развертывание программного продукта на сервере производится в соответствии со следующим пошаговым алгоритмом:

  1. Шаг 1. Получение дистрибутива:
    Склонируйте репозиторий с исходным кодом в локальную директорию на сервере:

    git clone http://172.20.7.4:3000/minor-chat/minor.git /opt/minor
    
  2. Шаг 2. Конфигурирование системы:
    Перейдите в каталог нужного сервиса бэкенда (например, chat_service) и создайте рабочий файл конфигурации окружения .env на основе шаблона:

    cd /opt/minor/backend/services/chat_service && cp .env.example .env
    

    Отредактируйте параметры подключения к БД, секретный ключ JWT для шифрования токенов и порты.

  3. Шаг 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. Шаг 4. Запуск всех компонентов:
    Запустите сборку образов микросервисов и разверните всю распределенную систему Minor:

    cd /opt/minor/deploy && docker-compose up --build -d
    

3.3. Порядок проверки работоспособности

Для верификации корректности развертывания распределенной системы выполните следующие действия:

  1. Выполните HTTP-запрос к эндпоинту проверки состояния микросервиса авторизации:

    curl -i http://localhost:8080/api/v1/auth/health
    

    Сервер должен вернуть статус 200 OK и JSON-тело {"status": "healthy"}.

  2. Проверьте логи шлюза API Traefik на отсутствие критических ошибок маршрутизации:

    cd /opt/minor/deploy && docker-compose logs | grep -E "(ERROR|FATAL)"
    
  3. Убедитесь в активности очередей в брокере сообщений NATS JetStream, выполнив команду в контейнере:

    cd /opt/minor/deploy && docker-compose exec nats nats stream info server_messages
    
  4. Откройте веб-браузер на клиентском компьютере, перейдите по настроенному доменному адресу (например, http://minor.novsu.ru) и убедитесь в отображении стартовой страницы авторизации.


4. Описание операций

4.1. Регистрация и аутентификация пользователя

При первом обращении к системе пользователь видит экран авторизации.

  • Если учетная запись еще не создана, необходимо нажать на ссылку «Регистрация» и ввести адрес корпоративной почты, имя пользователя и надежный пароль.
  • Для входа в систему введите e-mail и пароль в соответствующие поля ввода формы (Рисунок 1).
  • После успешной аутентификации Auth Service сгенерирует токен, который запишется в защищенные cookie браузера, и клиент будет автоматически перенаправлен на главный рабочий экран.
Рисунок 1 – Авторизация

4.2. Главное меню программы

Главный интерфейс Minor разделен на несколько функциональных зон (Рисунок 2):

  • В нижней части мобильного приложения (или в левой части веб-версии) отображаются круглые иконки доступных серверов (гильдий), а также кнопка быстрого перехода к личным сообщениям.
  • В центральной области выводится текущий выбранный чат.
  • Панель поиска сверху позволяет выполнять полнотекстовый поиск по истории личных сообщений (Рисунок 3).
Рисунок 2 – Главный экран Рисунок 3 – Поиск в главном меню

4.3. Управление профилем и настройки

Нажав на иконку настроек профиля, пользователь попадает в меню конфигурации (Рисунок 4). В данном разделе доступны:

  • Настройка приватности и доступа.
  • Управление системными звуковыми уведомлениями.
  • Переключение цветового оформления интерфейса (Светлая тема / Темная тема).
Рисунок 4 – Настройки

4.4. Навигация по серверам и создание каналов

При переходе на один из серверов в левой панели отображается список доступных каналов (Рисунок 5):

  • Текстовые каналы (помечаются знаком #) используются для обмена сообщениями и учебными файлами.
  • Голосовые каналы (помечаются значком динамика) служат для мгновенного подключения к голосовой связи. Достаточно кликнуть на канал для начала аудиообщения.
Рисунок 5 – Экран сервера

4.5. Обмен сообщениями

Для отправки сообщения выберите нужный текстовый канал, введите текст в поле ввода внизу экрана и нажмите клавишу Enter (или кнопку «Отправить»).

  • Для отправки файлов воспользуйтесь кнопкой со скрепкой.
  • Для записи голосового сообщения удерживайте кнопку с изображением микрофона.
  • Интерфейс личной переписки с другим пользователем представлен на Рисунке 6. Окно чата в текстовом канале сервера представлено на Рисунке 7.
Рисунок 6 – Личная переписка Рисунок 7 – Переписка в канале

4.6. Завершение работы с программой

Для корректного выхода из системы и предотвращения несанкционированного доступа к аккаунту с текущего устройства откройте настройки профиля и нажмите на кнопку «Logout» (Рисунок 4). В результате сессия будет аннулирована, а авторизационные токены удалены из памяти устройства.


5. Аварийные ситуации

В процессе эксплуатации распределенной системы Minor возможны сбои программного и аппаратного характера. Ниже представлены сценарии реагирования на нештатные ситуации:

Временная потеря сетевого соединения клиентом:

  • Поведение системы: Пользовательский веб-клиент автоматически переходит в режим ожидания. На экране отображается сообщение «Соединение потеряно. Попытка переподключения...».
  • Действия пользователя: Проверить физическое подключение к сети Интернет или интрасети НовГУ. При восстановлении связи клиентское приложение восстановит WebSocket-сессию автоматически без потери истории сообщений.

Отказ базы данных истории сообщений (Apache Cassandra):

  • Поведение системы: При попытке отправки или получения старых сообщений интерфейс выдает ошибку «Не удалось загрузить сообщения. Пожалуйста, попробуйте позже» (HTTP-статус 500). Работа авторизации и голосовых каналов при этом сохраняется (отказоустойчивость).
  • Действия администратора: Подключиться к серверу по SSH, проверить логи контейнера базы данных:

    docker-compose logs cassandra
    

    В случае необходимости выполнить перезапуск службы:

    docker-compose restart cassandra
    

Истечение времени действия сессии (JWT токена):

  • Поведение системы: При выполнении любого действия (отправка сообщения, переход в канал) система перенаправляет пользователя на форму входа.
  • Действия пользователя: Повторно пройти процедуру авторизации, введя логин и пароль.

Сбой брокера сообщений NATS JetStream:

  • Поведение системы: Сообщения сохраняются в БД, но перестают приходить другим участникам в реальном времени до момента ручного обновления страницы.
  • Действия администратора: Проверить статус контейнера NATS и очистить зависшие сообщения в очереди при переполнении диска.

6. Рекомендации по освоению

Для быстрого и эффективного начала работы с системой Minor рекомендуется придерживаться следующих шагов:

  • Изучение интерфейса: Основное расположение элементов управления (серверы, каналы, настройки) аналогично популярным мессенджерам Discord и Slack. Освоение базового функционала занимает у среднего пользователя не более 10–15 минут.
  • Групповая координация: Рекомендуется создавать отдельные серверы для каждой учебной дисциплины, а внутри них группировать каналы по типам заданий (например, текстовые каналы #лекции, #лабораторные и голосовой канал Консультации для созвонов с преподавателем).

7. Термины и сокращения

Таблица 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. Ильин Д. А., Распопов С. И.