Архитектура системы и бюджет оперативной памяти
RUSEON Core спроектирован как единый автономный сервис на Go, объединяющий захват потоков, кольцевые буферы в общей памяти, трансмуксинг с низкой задержкой и отказоустойчивое архивирование в строго ограниченный бюджет ресурсов.
1. Расчёт бюджета оперативной памяти процесса
Расход оперативной памяти RUSEON Core масштабируется строго линейно в зависимости от количества камер и зрителей:
text
Общий объем RAM = Базовый рантайм (~35 МБ) + (N_камер × 0.7 МБ) + (M_зрителей × 0.1 МБ) + BadgerDB MemTable (16 МБ)Детализация расхода памяти по компонентам:
| Компонент подсистемы | Выделяемая память | Назначение |
|---|---|---|
| Базовый рантайм Go | ~25 – 40 МБ | Рантайм Go, HTTP-роутер Gin, реестр метрик Prometheus, диспетчер SSE |
Кольцевой буфер RingBuffer | ~0.5 – 1.0 МБ на камеру | Кольцевой массив на 100 кадров для подпитки I-кадров и раздачи подписчикам |
| Буфер архиватора fMP4 | ~0.2 – 0.5 МБ на поток | Накопление фрагментов перед сбросом через sync_file_range и POSIX_FADV_DONTNEED |
| MemTable BadgerDB v4 | 16 МБ (глобально) | Запись LSM-дерева в памяти (opts.MemTableSize = 16MB, opts.NumMemtables = 1) |
| Сессия зрителя WebRTC | ~100 КБ на клиента | Состояние сессии Pion WebRTC, ICE-кандидаты и буфер батча на 32 пакета |
TIP
Практическое подтверждение: В эталонном бенчмарке bench-baseline.md под нагрузкой из 600 одновременных камер 1080p (18 139 FPS), 1 800 HLS-зрителей и 240 WebRTC-клиентов суммарный расход памяти процесса составил всего 471 МБ RSS RAM (140 МБ Heap Alloc).
2. Границы безопасности и изоляция процессов
- Работа без root-прав: RUSEON Core запускается под непривилегированным пользователем (
ruseon:ruseon). При привязке к стандартным портам80/443используется Linux capabilityCAP_NET_BIND_SERVICE. - Безопасность памяти: Чистый Go без Cgo исключает уязвимости переполнения буфера (Buffer Overflow) и Use-After-Free.
- Мультиплексирование WebRTC: Весь медиатрафик WebRTC может проходить через единый порт
8555/UDP, исключая необходимость открывать широкие диапазоны портов в фаерволе.