Перейти к основному содержимому

Архитектура

Обзор

«Взрыв4D» реализован по современным стандартам микросервисной архитектуры. Все компоненты разрабатываются и исполняются в отдельных Docker-контейнерах, что обеспечивает:

  • Изолированность сервисов
  • Масштабируемость
  • Повторяемость развёртывания
  • Независимость от операционной системы

Схема компонентов

┌──────────────────────────────────────────────────────┐
│ Внешний доступ к системе │
│ 3000 (Frontend), 8001 (API Gateway) │
│ MinIO: 9000 / 9001, Adminer: 8080 (опционально) │
└───────────────────────┬──────────────────────────────┘

┌────────▼────────┐
│ Docker network │
│ xblast4d-network│
└────────┬────────┘

┌─────────────────┼───────────────────────────────────────┐
│ │ │ │
┌─────▼─────┐ ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ Frontend │ │ API Gateway │ │ MinIO │ │ User Info │
│ 3000 │ │ 8001 │ │ 9000/9001 │ │ 8207 │
└───────────┘ └──────┬──────┘ └─────────────┘ └─────────────┘

┌─────────────────┼─────────────────────────────────────────────────────────────────────┐
│ │ │ │ │ │ │
┌─────▼─────┐ ┌───────▼──────┐ ┌──────▼─────┐ ┌──────▼─────┐ ┌─────▼─────┐ ┌────▼────┐ ┌──▼────────┐
│Import │ │Blast Blocks │ │Core Import │ │Block Model │ │Materials │ │Wells │ │Project │
│Storage │ │8202 │ │8203 │ │8204 │ │8209 │ │8205 │ │Manager │
│8201 │ └──────────────┘ └────────────┘ └────────────┘ └───────────┘ └─────────┘ │8206 │
└───────────┘ └────┬──────┘

┌───────▼──────┐
│ Viewer Data │
│ 8212 │
└──────────────┘

┌───────────────────────────────┐
│ PostgreSQL, Redis, MinIO Mgr │
│ и служебные сервисы │
└───────────────────────────────┘

Компоненты системы

Frontend

  • Фреймворк: Next.js 15 (React 19)
  • Языки: TypeScript, JavaScript
  • Визуализация: Three.js, WebAssembly (duckdb-wasm)
  • Стилизация: Tailwind CSS
  • Аутентификация: keycloak-js

API Gateway

  • Фреймворк: FastAPI
  • Протоколы: HTTP/REST, WebSockets
  • Маршрутизация: Nginx (реверс-прокси)

Вычислительные сервисы (Backend)

  • Язык: Python 3.10
  • Фреймворк: FastAPI + uvicorn
  • Асинхронный стек: asyncpg, SQLAlchemy
  • Очереди задач: Celery + Redis
  • Хранение файлов: MinIO

Инфраструктура

КомпонентНазначение
PostgreSQLРеляционная база данных
RedisКэширование и брокер очередей
MinIOS3-совместимое объектное хранилище
KeycloakУправление аутентификацией и авторизацией
NginxРеверс-прокси и балансировка

Взаимодействие компонентов

Фронтенд (Next.js) общается с бэкендом через API Gateway по протоколам HTTP/REST и WebSockets. Внешние порты обычно публикуются только на loopback-интерфейсе, а внешний доступ организуется через системный Nginx или иной реверс-прокси.

Вычислительные задачи распределяются через Celery с Redis в качестве брокера сообщений. Результаты сохраняются в PostgreSQL, файлы — в MinIO.

Контейнеризация

Все компоненты оркестрируются через Docker Compose:

  • docker-compose.yml — основная конфигурация
  • docker-compose.prod.yml — эксплуатационная конфигурация
  • docker-compose.gpu.yml — конфигурация с GPU-ускорением
к сведению

Компиляция в классическом понимании отсутствует. Запуск обеспечивается интерпретацией внутри Docker-контейнеров. Это гарантирует повторяемость, защищённость и удобство установки.