Skip to content

Replicación del archivo

media.dvr.replication

La replicación guarda copias adicionales de los fragmentos del archivo en otro streamer. La reproducción transparente del historial que permanece en los servidores anteriores después de trasladar una cámara se describe en Acceso remoto al archivo.

Las tareas típicas que esto resuelve:

  • migrar a un servidor nuevo sin perder historia — el nuevo graba el archivo fresco, el viejo conserva el pasado;
  • leer el archivo de servidores réplica;
  • recuperarse tras sustituir un disco.

En un clúster, el layouter de central gestiona la autorización de las solicitudes entre servidores. Genera la configuración de comunicación; no es necesario asignar permisos manuales a cada par de servidores.

Configuración

streams:
  - name: cam1
    inputs:
    - rtsp:
        url: rtsp://10.0.0.5/stream0
    dvr: {}
    remotes:
    - url: http://old-server:5080
      timeout_ms: 5000
Parámetro Descripción
url dirección del servidor Sapsan remoto donde está el archivo de este stream
timeout_ms tiempo de espera de las solicitudes al servidor remoto

Puede haber varios servidores remotos — Sapsan los interroga todos.

Replicación diferida

Si la grabación DVR está configurada y hay discos de archivo, los fragmentos históricos leídos de servidores remotos pueden guardarse en el archivo local. El contenido cifrado y los fragmentos del extremo del directo quedan excluidos de esta escritura. El archivo local incorpora progresivamente las partes del historial remoto que ven los espectadores; un error al guardarlas no impide su entrega al espectador.

La replicación escribe la historia ajena en los discos de archivo y la mantiene ahí hasta que la retención la limpia. Si el servidor no debe llevarse el archivo consigo, sino solo ahorrar red en lo popular, eso es la caché del archivo: discos de caché aparte, desalojo por antigüedad del último acceso y funcionamiento sin discos de archivo en absoluto.

Comportamiento ante fallos

  • Si un servidor remoto no está accesible pero los datos existen localmente, la reproducción continúa; el problema solo se registra en el log.
  • Sapsan memoriza qué rangos faltan en un remoto (caché negativa) y no vuelve a interrogarlo por los datos ausentes.
  • Los fragmentos init de los streams remotos se cachean.

Cómo se logra la unión sin costura

En cada acceso al archivo Sapsan fusiona los datos locales y los remotos:

  • Rangos del archivo — se combinan los intervalos disponibles de todos los servidores. Se conservan los huecos reales sin grabación.
  • Playlists — las listas de fragmentos del DVR local y de los servidores remotos se combinan, se ordenan y se deduplican. Las grabaciones ausentes no se reconstruyen.
  • Fragmentos — se leen en cascada: búfer del directo → DVR local → servidor remoto. La URL del fragmento es la misma para el reproductor independientemente de dónde vivan los datos.

Esto es posible gracias al direccionamiento estable: el fragmento se identifica por el nombre del stream, la pista y un timestamp entero con su timescale. La dirección se conserva en todos los servidores durante la replicación y la organización en clúster, sin recalcular la línea de tiempo al unir archivos.

Siguientes pasos