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.