Acesso remoto ao arquivo¶
media.dvr.remote
O Sapsan reúne as gravações de um mesmo stream, armazenadas em diferentes servidores do cluster, em um arquivo unificado acessível ao espectador. O streamer que atende à solicitação encontra o fragmento necessário nos outros servidores e o obtém pela rede. O reprodutor não precisa saber qual servidor gravou o momento escolhido nem em qual disco ele está armazenado.
Isso permite transferir uma câmera entre streamers mantendo o acesso ao seu histórico. As gravações antigas continuam no servidor anterior, e as novas são criadas no novo servidor. Não é necessário copiar previamente o arquivo para reunir o histórico.
A câmera foi transferida e o servidor anterior voltou¶
Suponha que a câmera cam1 estivesse sendo gravada no streamer A. Após uma falha dele, a captura e a gravação continuaram no streamer B. Mais tarde, A foi reparado e voltou ao cluster com os discos preservados.
| Etapa | Onde estão as gravações | Como o arquivo fica disponível |
|---|---|---|
| A câmera é gravada em A | Em A | As solicitações leem o arquivo de A. |
| A está indisponível e a câmera é gravada em B | O histórico anterior está em A, e o novo, em B | As gravações de B e outras cópias existentes e acessíveis estão disponíveis. |
| A voltou e foi incluído na entrega dos restos do arquivo | O histórico anterior continua em A, e o novo, em B | A reprodução obtém os fragmentos necessários dos dois servidores como o histórico de um único stream. |
Após o retorno de A, não é necessário esperar que todo o seu histórico seja copiado para B. O cluster usa as gravações preservadas onde elas estão: ao solicitar um momento antigo, lê os fragmentos de A; ao solicitar um momento novo, lê os de B. Para isso, A não precisa reconectar a câmera nem continuar gravando.
O mesmo vale para uma transferência planejada: o streamer anterior pode permanecer no cluster como fonte do arquivo antigo. Se a câmera foi gravada sucessivamente em vários servidores, o histórico pode reunir as gravações de cada um deles.
Como o cluster encontra as gravações anteriores¶
O central acompanha quais streamers possuem o arquivo do stream. Após a transferência, o arquivo preservado na máquina anterior é atendido pela atribuição de entrega dos restos do arquivo — dvr_parts.
Essa atribuição mantém o stream no servidor para a leitura do material já gravado. Ela não captura a fonte nem cria novas gravações, mas permite que outros streamers solicitem seus fragmentos. O armazenamento continua sujeito à profundidade do arquivo do stream.
O central estabelece as relações com os servidores de arquivo e fornece a autorização das solicitações entre streamers. A transferência da câmera não exige criar manualmente para o espectador uma nova lista de endereços dos servidores anteriores.
O streamer que voltou deve participar novamente da operação do cluster e atender às condições de entrega dos restos do arquivo. Entre os critérios considerados estão o namespace e as tags do stream, além de um endereço intracluster acessível. Se apenas dvr_cleanup for atribuído ao arquivo, ele será limpo segundo as regras de retenção, mas não será incluído na leitura remota. As condições de atribuição são descritas em restos do arquivo, e os endereços, em gerenciamento de streamers.
Endereçamento unificado dos fragmentos¶
Um fragmento é identificado pelo nome do stream, pela faixa e por um timestamp inteiro com seu timescale. Seu endereço não depende do disco físico nem do servidor que fez a gravação. Veja os detalhes em endereçamento do arquivo.
Por isso, a solicitação de um fragmento da câmera cam1 em um horário escolhido mantém seu significado após a transferência da câmera. O que muda é o servidor que fornece os bytes, não a identidade da gravação.
Ao construir a resposta, o Sapsan executa várias ações:
- Reúne os intervalos — combina os períodos disponíveis dos arquivos local e remotos. Os períodos reais sem gravação são preservados: a união não os transforma em vídeo gravado.
- Monta as listas de fragmentos — reúne os resultados dos servidores, ordena-os por horário e remove as repetições de um mesmo fragmento.
- Lê os dados — usa uma fonte local disponível ou obtém o fragmento necessário de um streamer remoto, junto com as informações necessárias à reprodução.
Para o reprodutor, o arquivo continua pertencendo ao mesmo stream. O Sapsan gerencia a transição entre os servidores de armazenamento; o cliente não precisa unir por conta própria os arquivos separados de A e B.
Acesso sem transferência prévia dos dados¶
Reunir o histórico não exige uma tarefa de transferência de todo o arquivo, espaço adicional para uma cópia completa no novo servidor nem uma nova gravação do vídeo antigo. Os streamers transferem os dados solicitados à medida que são lidos. Tornar um arquivo grande novamente acessível não depende do tempo que sua cópia completa levaria.
A leitura remota pode interagir com duas outras capacidades:
- Replicação do arquivo — cria cópias locais. No pipeline atual, um streamer com gravação DVR configurada e discos de arquivo pode salvar em seu próprio arquivo os fragmentos remotos lidos. Essa replicação sob demanda não é uma condição prévia para acessar o histórico.
- Cache do arquivo — armazena os dados lidos em discos de cache para solicitações posteriores e para reduzir a carga de rede.
Portanto, a ausência de uma migração obrigatória não impede a criação de cópias locais durante a reprodução. O acesso transparente permite usar o arquivo onde ele já está; a replicação e o cache também alteram a localização dos dados lidos.
Disponibilidade do histórico¶
O material disponível é aquele que foi preservado no arquivo e está em uma fonte acessível. Enquanto o único servidor com um trecho antigo estiver desligado, não será possível ler esse trecho de seus discos pela rede. Após o retorno do servidor e a restauração de sua participação na entrega, as gravações voltam a fazer parte do histórico unificado, dentro do prazo de retenção restante.
Para acessar as gravações também durante uma falha do servidor, são necessárias cópias acessíveis do arquivo. A leitura remota usa essas cópias, mas não cria uma gravação inexistente nem recupera um período em que ninguém gravou a câmera.
Após a transferência e o retorno do servidor, verifique:
- O nome do mesmo stream foi preservado: o arquivo está associado à sua identidade, não apenas ao endereço da câmera.
- O servidor anterior está visível no cluster e recebeu a atribuição de entrega dos restos do arquivo para esse stream.
- Seu endereço intracluster está acessível aos outros streamers, e a autorização entre servidores está funcionando.
- Os intervalos antigos e novos aparecem no histórico, e os momentos anteriores e posteriores à transferência são reproduzidos.
A configuração da gravação é descrita em DVR, e a seleção do horário de reprodução, em reprodução do arquivo.