Обзор разработки
RUSEON Core — это высокопроизводительная платформа видеоинфраструктуры и пайплайн обработки AI-метаданных, написанная на языке Go. Архитектура системы построена на принципах zero-copy управления памятью, низколатентного трансмуксинга (RTSP в HLS и WebRTC/WHEP без перекодирования), отказоустойчивой записи fMP4-архива с оптимизациями ввода-вывода ядра Linux и передачи метаданных через gRPC.
В данном разделе собраны руководства по настройке локального окружения, запуску тестов, проведению бенчмарков и участию в развитии проекта (Open Source & Enterprise).
Технологический стек
| Слой | Технологии и библиотеки | Назначение и ответственность |
|---|---|---|
| Серверное ядро | Go 1.26+, gorilla/websocket, pion/webrtc | Высокопроизводительный трансмуксинг, кольцевой буфер, WHEP-сервер |
| База данных и состояние | BadgerDB v4 (dgraph-io/badger/v4) | Встраиваемое key-value хранилище с синхронной гарантией записи (ACID) |
| Пайплайн AI-метаданных | gRPC (google.golang.org/grpc), Protocol Buffers | Приём детекций и телеметрии в реальном времени с минимальным CPU |
| Метрики и пробы | Prometheus (prometheus/client_golang) | Метрики производительности, счётчики дропов, пробы /livez и /readyz |
| Веб-интерфейс | React 19, TypeScript, Vite, Tailwind CSS | Панель управления, WebRTC/HLS плееры, интерактивный таймлайн архива |
| Тестирование и CI | Testcontainers, k6, Go Native Fuzzing, GitHub Actions | E2E-тесты полного цикла, нагрузочное тестирование, статический анализ |
Структура репозитория
Структура проекта организована в соответствии со стандартами Go:
text
ruseon-core/
├── api/ # Protocol Buffer (.proto) файлы и спецификации OpenAPI/Swagger
├── cmd/
│ ├── server/ # Точка входа HTTP/WebRTC/HLS/gRPC сервера
│ └── ruseon-cli/ # Административная CLI-утилита
├── internal/
│ ├── api/ # REST HTTP-обработчики, middleware и маршрутизация
│ ├── auth/ # JWT-аутентификация и управление пользователями
│ ├── buffer/ # Zero-copy RingBuffer и lock-free бродкастер
│ ├── config/ # Загрузчик конфигурации (YAML и переменные окружения)
│ ├── db/ # BadgerDB v4, миграции схемы и транзакции
│ ├── events/ # Вебхуки с circuit breaker и MQTT-паблишер
│ ├── grpc/ # Реализация gRPC-сервера приёма AI-метаданных
│ ├── metrics/ # Коллекторы метрик Prometheus и реестр телеметрии
│ ├── recorder/ # Прямой fMP4-архиватор со скользящим окном sync_file_range
│ └── stream/ # RTSP-клиент, Pion WebRTC движок и HLS-муксер
├── pkg/ # Переиспользуемые публичные пакеты и сгенерированные gRPC-типы
├── tests/ # End-to-End (E2E) тесты с Testcontainers
└── web/ # React 19 одностраничное приложение (SPA)Ключевые инженерные принципы
- Zero-Allocations на горячем пути: Распределение видеокадров через Ring Buffer (Кольцевой буфер) исключает лишние аллокации в куче и нагрузку на GC.
- Отказоустойчивость архива: Запись на диск использует системные вызовы ядра Linux (
sync_file_range,FADV_DONTNEED), защищая системный Page Cache от вытеснения при интенсивной записи. - Строгие стандарты качества кода: Каждый Pull Request проходит race detector (
-race), unit-тестирование, фаззинг и полный E2E-пайплайн с реальным видеопотоком. - Синхронная локализация: Вся функциональность и API документируются параллельно на русском и английском языках.
Подразделы
- Настройка окружения — Требования к инструментарию, зависимости и сборка бинарников.
- Руководство по тестированию — Unit, интеграционные, E2E, фаззинг и нагрузочные тесты.
- CI/CD Пайплайны — Описание GitHub Actions воркфлоу и проверок безопасности.
- Участие в разработке — Git workflow, соглашения о ветках и стиле кода.