◆ ForgeVis
Skip to content

Платформа

ForgeVis записывает видео сам по себе. Платформа — это то, что добавляется, когда одного рекордера становится мало: база данных вместо файлов конфигурации, веб-интерфейс вместо SSH и кластеры вместо серверов, которые держат в голове.

Это дополнение, а не зависимость. Ничего из описанного ниже не меняет то, как работает рекордер, — меняется лишь то, кто говорит ему, что записывать.

Три варианта и как понять, какой ваш

Решает не число камер. Решает то, где живёт список камер, — и каждый ответ тянет за собой следующую часть.

Камеры заданы вНужна БДНужна платформа
Standaloneconfig.yamlнетнет
Standalone + БДтаблице camerasдада — схема принадлежит ей
Кластертаблице cameras, распределение через консенсусдада

Standalone

Один сервер, камеры в файле конфигурации, изменения подхватывает файловый watcher. Для одного объекта это и есть весь продукт, и ничего с этой страницы ему не нужно — руководство описывает его целиком.

Standalone с базой данных

Список камер переезжает из файла в PostgreSQL. Рекордер читает камеры, у которых node_name совпадает с его собственным, и узнаёт об изменениях через триггер уведомлений.

Вот здесь платформа и становится необходимой, по причине, которую стоит назвать прямо: рекордер этой схемой не владеет. Он читает две таблицы и не создаёт ни одной. Кто-то должен их построить, поддерживать миграции и дать способ править строки, отличный от psql, — и этот кто-то бекэнд.

Кластер

Несколько рекордеров держат общее состояние через консенсус Raft и сами решают, какая нода пишет какую камеру. Камеры упавшей ноды переезжают на живые без звонка дежурному.

Здесь рекордер загружает все включённые камеры, а записывает только те, что ему назначил кластер. Отсюда следует, что кластерная нода без кластера — это не standalone-сервер: нет членства — нет назначений, нет назначений — нет записи. cluster.enabled нельзя включить наполовину.

Что делает каждая часть

Бекэнд

API и владелец базы данных.

  • Владеет схемой. Таблицы, индексы и миграции — его, включая те две таблицы, которые читает рекордер. Миграции применяются до старта рекордеров, см. Общая база данных.
  • Объекты, камеры, тенанты, лицензии.
  • Обращается к нодам. Состояние, метрики, состав кластера, сертификаты.
  • Выпускает сертификаты кластера. У каждого кластера свой удостоверяющий центр; бекэнд хранит его приватный ключ зашифрованным и подписывает то, что запрашивают ноды. См. Добавление нод.

Control Plane

Интерфейс оператора — парк серверов и кластеры, собранные из него.

Добавить сервер, собрать кластер, повысить ноду до voter, вывести её в drain перед обслуживанием — всё здесь, ничего через SSH.

Что входит в поставку

Обзор и Контуры завершены и включены. Объекты, камеры, тенанты, лицензии, биллинг, брендирование и журнал действий есть в коде, но выключены: модуль становится видимым, когда все его части делают то, что обещает интерфейс. Пока модуль лицензий выключен, лицензия ставится руками — файл forgevis.lic кладётся рядом с config.yaml на ноде.

Что при этом не меняется

Рекордер продолжает работать так же, как работал.

  • Видео через платформу не идёт. RTSP, HLS и WebRTC отдаёт сама нода, напрямую клиенту. Платформа — путь управления, а не путь данных: потеря платформы стоит вам интерфейса, а не записи.
  • У ноды остаётся своя аутентификация. Платформа представляется ноде машинным пользователем из её же security.users — тем же механизмом, что и оператор.
  • Транскодирование нигде не появляется. H.264 и H.265 по-прежнему проходят насквозь.

Дальше

Proprietary software.