Skip to content

Replicação do arquivo

media.dvr.replication

A replicação armazena cópias adicionais dos fragmentos do arquivo em outro streamer. A reprodução transparente do histórico que permanece nos servidores anteriores após a transferência de uma câmera é descrita em Acesso remoto ao arquivo.

As tarefas típicas que isso resolve:

  • migrar para um servidor novo sem perder histórico — o novo grava o arquivo fresco, o velho guarda o passado;
  • ler o arquivo de servidores réplica;
  • se recuperar depois da troca de um disco.

Em um cluster, o layouter no central gerencia a autorização das requisições entre servidores. Ele gera a configuração de comunicação; não é necessário atribuir permissões manuais a cada par de servidores.

Configuração

streams:
  - name: cam1
    inputs:
    - rtsp:
        url: rtsp://10.0.0.5/stream0
    dvr: {}
    remotes:
    - url: http://old-server:5080
      timeout_ms: 5000
Parâmetro Descrição
url endereço do servidor Sapsan remoto onde está o arquivo deste stream
timeout_ms tempo limite das requisições ao servidor remoto

Pode haver vários servidores remotos — o Sapsan consulta todos.

Replicação diferida

Quando a gravação DVR está configurada e há discos de arquivo, os fragmentos históricos lidos de servidores remotos podem ser salvos no arquivo local. O conteúdo criptografado e os fragmentos no limite ao vivo ficam excluídos dessa gravação. O arquivo local passa a conter gradualmente os trechos do histórico remoto que os espectadores assistem; uma falha ao salvá-los não impede a entrega ao espectador.

A replicação grava a história alheia nos discos de arquivo e a mantém ali até a retenção limpá-la. Se o servidor não deve trazer o arquivo para si, e sim apenas economizar rede no que é popular, isso é o cache do arquivo: discos de cache separados, despejo pela idade do último acesso e funcionamento sem discos de arquivo algum.

Comportamento diante de falhas

  • Se um servidor remoto está inacessível mas os dados existem localmente, a reprodução continua; o problema é apenas registrado no log.
  • O Sapsan memoriza de quais faixas um remoto não dispõe (cache negativo) e não volta a consultá-lo por dados ausentes.
  • Os fragmentos init dos streams remotos ficam em cache.

Como se consegue a emenda perfeita

A cada acesso ao arquivo o Sapsan une os dados locais e os remotos:

  • Intervalos do arquivo — os intervalos disponíveis de todos os servidores são combinados. Os períodos reais sem gravação são preservados.
  • Playlists — as listas de fragmentos do DVR local e dos servidores remotos são combinadas, ordenadas e deduplicadas. As gravações ausentes não são reconstruídas.
  • Fragmentos — são lidos em cascata: buffer do ao vivo → DVR local → servidor remoto. A URL do fragmento é a mesma para o reprodutor independentemente de onde os dados moram.

Isso é possível graças ao endereçamento estável: o fragmento é identificado pelo nome do stream, pela pista e por um timestamp inteiro com seu timescale. O endereço é preservado em todos os servidores durante a replicação e a operação em cluster, sem recalcular a linha do tempo ao unir arquivos.

Próximos passos