Skip to content

Архитектура системы и бюджет оперативной памяти ​

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 v416 МБ (глобально)Запись 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 capability CAP_NET_BIND_SERVICE.
  • Безопасность памяти: Чистый Go без Cgo исключает уязвимости переполнения буфера (Buffer Overflow) и Use-After-Free.
  • Мультиплексирование WebRTC: Весь медиатрафик WebRTC может проходить через единый порт 8555/UDP, исключая необходимость открывать широкие диапазоны портов в фаерволе.

Связанная документация ​

Released under the MIT License.