Skip to content

Репликация архива

media.dvr.replication

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

Типовые задачи, которые это решает:

  • миграция на новый сервер без потери истории — новый пишет свежий архив, старый хранит прошлое;
  • чтение архива с серверов-реплик;
  • восстановление после замены диска.

В кластере авторизацию запросов между серверами обеспечивает лейаутер в central. Он формирует серверные настройки взаимодействия; вручную выдавать отдельные разрешения для каждой пары серверов не требуется.

Настройка

streams:
  - name: cam1
    inputs:
    - rtsp:
        url: rtsp://10.0.0.5/stream0
    dvr: {}
    remotes:
    - url: http://old-server:5080
      timeout_ms: 5000
Параметр Описание
url адрес удаленного сервера Sapsan, на котором есть архив этого потока
timeout_ms таймаут запросов к удаленному серверу

Удаленных серверов может быть несколько — Sapsan опросит все.

Ленивая репликация

При настроенной записи DVR и наличии архивных дисков прочитанные удалённые исторические фрагменты могут сохраняться в локальный архив. Шифротекст и фрагменты у живого края в такую запись не входят. Локально постепенно появляются те участки чужой истории, которые смотрят зрители; ошибка их сохранения не мешает отдаче зрителю.

Репликация пишет чужую историю на архивные диски и держит ее там до зачистки по ретенции. Если сервер должен не переносить архив к себе, а лишь экономить сеть на популярном — это кэш архива: отдельные кэш-диски, вытеснение по давности обращения и работа без архивных дисков вовсе.

Поведение при сбоях

  • Если удаленный сервер недоступен, а данные есть локально — проигрывание продолжается, проблема только логируется.
  • Sapsan запоминает, каких диапазонов на удаленном сервере нет (negative cache), и не опрашивает его повторно за отсутствующими данными.
  • Init-фрагменты удаленных потоков кешируются.

Как достигается бесшовность

При каждом обращении к архиву Sapsan объединяет локальные и удаленные данные:

  • Диапазоны архива — объединяются доступные интервалы всех серверов. Реальные промежутки без записи сохраняются.
  • Плейлисты — списки фрагментов локального DVR и удалённых серверов объединяются, сортируются и дедуплицируются. Отсутствующие записи при этом не восстанавливаются.
  • Фрагменты — читаются каскадом: live-буфер → локальный DVR → удаленный сервер. URL фрагмента для плеера одинаковый независимо от того, где лежат данные.

Это возможно благодаря стабильной адресации: фрагмент определяется именем стрима, дорожкой и целочисленным timestamp с его timescale. Адрес сохраняется на всех серверах при репликации и кластеризации, поэтому объединение архивов не требует пересчёта временной шкалы.

Что дальше