Acceso remoto al archivo¶
media.dvr.remote
Sapsan reúne las grabaciones de un mismo stream almacenadas en distintos servidores del clúster en un archivo común disponible para el espectador. El streamer que atiende la solicitud localiza el fragmento necesario en otros servidores y lo obtiene por la red. El reproductor no necesita saber qué servidor grabó el momento seleccionado ni en qué disco se guarda.
Esto permite trasladar una cámara entre streamers conservando el acceso a su historial. Las grabaciones antiguas permanecen en el servidor anterior y las nuevas aparecen en el nuevo. No es necesario copiar previamente el archivo para reunir el historial.
La cámara se ha trasladado y el servidor anterior ha vuelto¶
Supongamos que la cámara cam1 se grababa en el streamer A. Tras su fallo, la captura y la grabación continuaron en el streamer B. Más tarde, A se reparó y volvió al clúster con sus discos conservados.
| Etapa | Dónde están las grabaciones | Cómo se accede al archivo |
|---|---|---|
| La cámara se graba en A | En A | Las solicitudes leen el archivo de A. |
| A no está disponible y la cámara se graba en B | Historial anterior en A y nuevas grabaciones en B | Se puede acceder a las grabaciones de B y a otras copias disponibles. |
| A vuelve y recibe la asignación de entrega de restos del archivo | El historial anterior permanece en A y las nuevas grabaciones en B | La reproducción obtiene los fragmentos necesarios de ambos servidores como historial de un mismo stream. |
Cuando A vuelve, no es necesario esperar a que todo su historial se copie en B. El clúster utiliza las grabaciones conservadas donde están: las solicitudes de momentos antiguos leen fragmentos de A y las de momentos nuevos, fragmentos de B. Para ello, A no necesita volver a conectarse a la cámara ni reanudar la grabación.
Un traslado planificado funciona igual: el streamer anterior puede permanecer en el clúster como fuente del archivo antiguo desde el principio. Si una cámara se ha grabado sucesivamente en varios servidores, su historial puede incluir las grabaciones de cada uno de ellos.
Cómo encuentra el clúster las grabaciones anteriores¶
Central registra qué streamers tienen el archivo de un stream. Tras el traslado, el archivo conservado en la máquina anterior se sirve mediante una asignación de entrega de restos del archivo — dvr_parts.
Esta asignación mantiene el stream en el servidor para leer lo ya grabado. No captura la fuente ni crea nuevas grabaciones, pero permite a otros streamers solicitar sus fragmentos. El almacenamiento sigue sujeto a la profundidad del archivo del stream.
Central establece las conexiones con los servidores de archivo y autoriza las solicitudes entre streamers. Trasladar una cámara no requiere preparar manualmente para el espectador una nueva lista de las direcciones de sus servidores anteriores.
El streamer que vuelve debe participar de nuevo en el funcionamiento del clúster y cumplir los requisitos para entregar restos del archivo. En particular, se tienen en cuenta el espacio de nombres y las etiquetas del stream, así como una dirección interna del clúster accesible. Si el archivo solo tiene asignado dvr_cleanup, se limpia según las reglas de retención, pero no se incluye en las lecturas remotas. Las condiciones de asignación se describen en restos del archivo, y las direcciones, en gestión de streamers.
Direccionamiento común de fragmentos¶
Un fragmento se identifica por el nombre del stream, la pista y una marca de tiempo entera con su timescale. Su dirección no depende del disco físico ni del servidor que lo grabó. Consulte el direccionamiento del archivo.
Por tanto, una solicitud del «fragmento de la cámara cam1 en el momento seleccionado» conserva su significado después de trasladar la cámara. Cambia el servidor que proporciona los bytes, no la identidad de la grabación.
Al construir la respuesta, Sapsan realiza varias operaciones:
- Combina intervalos — reúne los intervalos disponibles de los archivos locales y remotos. Los huecos reales sin grabación se conservan: combinarlos no los convierte en vídeo grabado.
- Construye listas de fragmentos — reúne los resultados de los servidores, los ordena por tiempo y elimina las entradas duplicadas de un mismo fragmento.
- Lee los datos — utiliza una fuente local disponible u obtiene el fragmento necesario de un streamer remoto, junto con la información necesaria para reproducirlo.
Para el reproductor, el archivo sigue siendo el del mismo stream. Sapsan gestiona el paso entre servidores de almacenamiento; el cliente no necesita combinar por su cuenta los archivos de A y B.
Acceso sin traslado previo de datos¶
Reunir el historial no requiere una tarea para trasladar todo el archivo, espacio adicional para una copia completa en el nuevo servidor ni volver a grabar el vídeo antiguo. Los streamers transfieren los datos solicitados a medida que se leen. Volver a hacer accesible un archivo grande no depende del tiempo que llevaría copiarlo por completo.
La lectura remota puede interactuar con otras dos funciones:
- Replicación del archivo — crea copias locales. En el pipeline actual, un streamer con grabación DVR configurada y discos de archivo puede guardar en su propio archivo los fragmentos leídos remotamente. Esta replicación bajo demanda no es un requisito previo para acceder al historial.
- Caché del archivo — guarda los datos leídos en discos de caché para solicitudes posteriores y reduce el tráfico de red.
Por tanto, que no haya una migración obligatoria no impide crear copias locales durante la reproducción. El acceso transparente permite utilizar el archivo donde ya está; la replicación y la caché modifican además la ubicación de los datos leídos.
Disponibilidad del historial¶
Está disponible el material que se ha conservado en el archivo y reside en una fuente accesible. Mientras el único servidor con un tramo antiguo esté apagado, sus discos no pueden leerse por la red. Cuando el servidor vuelve y reanuda la entrega de grabaciones, estas se incorporan de nuevo al historial común, dentro del periodo de retención restante.
Para acceder a las grabaciones también durante un fallo del servidor, se necesitan copias disponibles del archivo. La lectura remota utiliza esas copias, pero no crea grabaciones que no existen ni recupera intervalos durante los que nadie grabó la cámara.
Tras trasladar la cámara y recuperar el servidor, compruebe lo siguiente:
- Se conserva el nombre del mismo stream: el archivo está vinculado a su identidad, no solo a la dirección de la cámara.
- El servidor anterior es visible en el clúster y tiene una asignación de entrega de restos del archivo para ese stream.
- Su dirección interna del clúster es accesible desde otros streamers y la autorización entre servidores funciona.
- En el historial aparecen los intervalos antiguos y los nuevos, y se reproducen momentos de ambos lados del traslado.
La configuración de grabación se describe en DVR, y la selección del momento de reproducción, en reproducción del archivo.