Skip to content

About

OrbitX - Интеллектуальный мониторинг орбитальных группировок в реальном времени(Real-time intelligent monitoring of orbital constellations)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

OrbitX MVP

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

🌐 Сайт сервиса: orbitx-web.com


Архитектура и системное проектирование

Система спроектирована как модульный вертикальный монолит с разделением внутренних слоев каждого бизнес-модуля по принципам Луковой архитектуры (Onion Architecture).

  • Изоляция домена: Математические модели, константы и алгоритмы расчета баллистики полностью инкапсулированы внутри доменного слоя и изолированы от внешних фреймворков, баз данных и инфраструктурных слоев.
  • Вертикальные слайсы: Кодовая база разбита на независимые функциональные модули (SatelliteData, SGP4Data), что исключает связность кода и обеспечивает прозрачный путь миграции на распределенные системы в случае роста проекта.

Конвейер телеметрии и управление памятью

Платформа обрабатывает параллельные вычислительные циклы баллистических координат в реальном времени, используя паттерны низкоуровневого управления ресурсами среды выполнения .NET:

  • Стратегия Id-Only Caching: Для оптимизации дисковой подсистемы PostgreSQL и исключения холостых операций ввода-вывода (I/O) приложение кэширует легковесные коллекции идентификаторов сущностей в IMemoryCache. Пагинация и фильтрация каталога по 41 категории рассчитываются непосредственно в оперативной памяти сервера (ОЗУ).
  • Параллельные асинхронные вычисления: Фоновый воркер пересчета координат изолирует тяжелые математические расчеты ядра SGP4 от основного потока приложения с помощью асинхронных долгоживущих задач (Task.Run). Состояние разделяемой памяти защищено с помощью потокобезопасных коллекций (ConcurrentDictionary), что предотвращает гонки потоков (Race Conditions) при конкурентном доступе пользователей к трансляциям.
  • Детерминированная очистка ресурсов: Реализован жесткий контроль жизненного цикла дуплексных соединений поверх SignalR (WebSockets). Через сквозные цепочки CancellationToken фоновый воркер мгновенно фиксирует разрыв клиентской сессии, принудительно гасит вычислительную задачу для этого спутника и зачищает память от «зомби-соединений», предотвращая утечки памяти (Memory Leaks).
  • Изоляция сбоев (High Availability): Внедрена структурная отказоустойчивость. При кратковременном падении СУБД система локализует инфраструктурный сбой, переключается на производительное логирование через Source Generators ([LoggerMessage]) и бесперебойно стримит координаты клиентам из прогретого кэша оперативной памяти.

Инфраструктура и DevOps-спецификация

Архитектура развернута на базе тройной Docker-топологии с обеспечением жестких границ изоляции окружений:

  • Разделение контуров: Изолированные compose-файлы поддерживают независимые контексты для локальной разработки (Local Dev), закрытого контура тестирования на VPS (Staging) и боевого сервера (Production).
  • Безопасность данных: Контейнер СУБД PostgreSQL полностью скрыт внутри изолированной Docker-сети overlay без публикации портов во внешний мир. Доступ к данным ограничен шифрованными SSH-туннелями с пробросом локальных портов.
  • Шлюзование трафика: Прокси-сервер Nginx выступает в роли ingress-контроллера, обеспечивая терминацию SSL/TLS сертификатов и безопасное обратное проксирование WebSocket-соединений (wss://).

Технологический стек

  • Бэкенд: .NET, ASP.NET Core, Entity Framework Core, PostgreSQL, SignalR (WebSockets).
  • Математическое ядро: Баллистическая модель вычислений SGP4 (Simplified General Perturbations 4).
  • Фронтенд: Vue 3, TypeScript, Vite, Leaflet.js (картография).
  • Среда рантайма: Docker, Docker Compose, Nginx Reverse Proxy, Linux (Ubuntu LTS), Fail2ban.

Развертывание

  • Для развертывания презентационной/тестовой песочницы сервиса, введите следующие команды в cmd/powerShell/любой другой консоли:
git clone https://github.com/TembulatC/OrbitX-Open.git
  • Перейдите в папку созданную командой выше(если вы до этого ее ни разу не создавали)
  • Затем переименуйте .env.example в .env. Вписывайте нужные вам данные.
  • Затем введите следующие команды:
cd "Полный путь до вашей папки\OrbitX-Open"
docker-compose up -d --build

После этих действий ваша песочница развернется на вашем ПК(обязательно установите и запустите Docker Desktop для этого)

Сайт откроется и будет доступен для просмотра по адресу: http://localhost:8081

  • Что бы открыть swagger для управления данными и добавленим их в БД для просмотра траекторий спутников(БД изначально пустое при развертывании сервиса) необходимо перейти по адресу: http://localhost:{порт(см. ниже)}/swagger/index.html
  • Нужный порт для адреса выше можно получить выполнив команду в корне папки OrbitX-Open:
docker port orbitx-local
  • Зайдя в swagger выбирайте метод /api/v1/AddSatelliteData и вводите туда любую нужную вам категорию спутника с маленькой буквы (например kuiper, (см. категории на сайте https://celestrak.org/NORAD/elements/index.php?FORMAT=csv нажимая на маленькие синие документики рядом с названием категорий. Там откроется страница и в её URL-адресе можно посмотреть название категории) и нажимаете Execute.
  • Заходите на сам сайт на порту 8081. Переходите на каталог спутников и из выпадающего списка категорий спутников выбираете ту которую вы недавно добавили и из предоставленных спутников нажимаете кнопку Запустить

About

OrbitX - Интеллектуальный мониторинг орбитальных группировок в реальном времени(Real-time intelligent monitoring of orbital constellations)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages