Cópias VOD e balanceamento¶
Um asset enviado a um único streamer é reproduzido só a partir dele: se o streamer cai, o asset fica indisponível, e todos os seus espectadores estão em uma única máquina. Uma cópia do asset em outro streamer elimina as duas limitações. O central distribui os espectadores entre os streamers que têm o asset, o streamer que caiu sai da escolha e o que volta entra de novo.
A cópia não é uma entidade à parte: ela é feita pela mesma tarefa que a transcodificação, conforme o modelo de asset. No cartão do asset a cópia aparece como mais uma localização ao lado do original.
Quantas cópias¶
No formulário do modelo há o campo Cópias em outros servidores: sem cópia, 1, 2 e assim por diante. O número é contado além do original: 1 significa que o asset ficará em dois streamers. A lista oferece tantas cópias quantas cabem no cluster: os streamers com armazenamento VOD menos um; a dica sob o campo diz quantos são. Pela API é possível ultrapassar o número da lista, mas a tarefa então esperará até que apareça um streamer para a cópia.

As cópias são feitas por cada tarefa conforme este modelo: a que entra sozinha após o envio e Iniciar tarefa… no cartão do asset. Para a cópia vão as saídas da tarefa, o descritor e todos os demais arquivos do asset que ainda não estão lá: um pôster ou legendas enviados depois também chegam com a tarefa seguinte. O original marcado excluir após o processamento não é copiado: ele será excluído de qualquer forma.
Um modelo só com cópia, sem qualidades, também é permitido: é assim que se copiam arquivos já prontos sem transcodificar nada.
Onde a cópia vai parar¶
O operador não escolhe o streamer para a cópia; quem escolhe é o central ao entregar a tarefa:
- o streamer está online, com um armazenamento VOD disponível cujo diário o central consegue ler;
- o papel Cópia está ativo no streamer (veja abaixo);
- ele ainda não tem este asset, nem o original nem outra cópia: uma cópia por streamer, senão a falha de uma máquina não salvaria os espectadores;
- o espaço livre não é menor que o limite
vod_min_free_bytes(1 GiB por padrão) mais o tamanho dos arquivos do asset.
Dos adequados é tomado o mais livre. As cópias já existentes do asset são sempre atualizadas; as novas são criadas enquanto houver menos cópias do que o definido.
Se não há streamer para a cópia, a tarefa espera na fila e não gasta tentativas; no registro de tarefas o motivo é dito em palavras:
- sem servidor — não há nenhum streamer com o papel de cópia que não tenha este asset;
- sem espaço — há streamers, mas seus armazenamentos estão cheios;
- o armazenamento da cópia não está pronto — o streamer de uma cópia já existente está offline ou cheio;
- o papel de cópia está desligado — o streamer que já tem a cópia foi retirado da cópia; ao devolver o papel, a mesma tarefa termina a cópia.
Aparece um streamer, libera-se espaço ou liga-se o recebimento de cópias, e a tarefa segue sozinha.
Como a cópia chega¶
A cópia é feita por uma tarefa de cópia separada no streamer de destino: no registro de tarefas ela está marcada como cópia ao lado do nome do streamer, e seu cartão nomeia o pai, a tarefa cujas saídas são entregues. O central a cria quando o pai termina, ou imediatamente se o modelo consiste apenas em uma cópia. O streamer de destino lê os arquivos do streamer com o original pelo endereço interno do cluster por conta própria, confere tamanho e hash com o catálogo e os publica localmente; nem o central nem o streamer do original enviam bytes. As cópias seguem em sua própria faixa e não ocupam slots de transcodificação.
No cartão da tarefa de cópia ao lado do status estão o chip cópia e, enquanto os bytes chegam, o chip download da cópia; abaixo da barra de progresso, em vez do tempo processado e da velocidade de transcodificação, estão Transferido — quantos bytes chegaram de quantos — e Velocidade de transferência. Nos detalhes constam o Servidor da cópia, os Arquivos que esta tarefa leva e a Tarefa principal com link; o cartão do próprio pai lista suas cópias no resultado com o servidor e o status. A tarefa fica pronta quando cada arquivo foi recebido.

Se não há nada a copiar porque a cópia já tem tudo, o pai é marcado sem cópia com uma dica do motivo pelo qual a cópia não foi necessária. Uma leitura interrompida ou um hash que não confere fecham a tarefa de cópia com erro, e o broker a repete com uma nova tentativa sobre o conteúdo atual do asset.
Papéis do streamer¶
Qual trabalho com VOD o central entrega a um streamer é decidido por dois papéis do streamer nas configurações do streamer, na seção Papel e alocação: Transcodificação — o streamer recebe tarefas de transcodificação dos seus assets, Cópia — o streamer aceita cópias de assets nos seus armazenamentos e as busca por conta própria. Ambos estão ativos por padrão. O papel é uma decisão do central, a capacidade é uma propriedade da build: um streamer sem backend de transcodificação mostra uma nota sob o interruptor e não recebe tarefas de transcodificação, diga o que disser o papel.
Desligar um papel interrompe apenas a entrega de trabalho novo. As tarefas que o streamer já executa terminam e continuam visíveis no registro; lá elas podem ser canceladas uma a uma. Uma cópia que ainda não começou passa para outro streamer, se houver; uma cópia que atualiza um asset que já está neste streamer espera o papel voltar. Tudo o que o streamer tem continua sendo servido, e os envios para seus armazenamentos não são restringidos. É assim que uma máquina é retirada para manutenção ou destinada a outras tarefas sem tocar no seu conteúdo.
Ao desligar um papel em um streamer com tarefas não concluídas, o console avisa quantas há e que elas terminarão, e desliga o papel só após a confirmação.

Como os espectadores reproduzem¶
O link de reprodução é o mesmo seja qual for o streamer que serve o arquivo: nele está o asset id. A cada pedido o central escolhe, entre as localizações prontas do asset, o streamer com menos sessões (em caso de empate, o primeiro pelo nome) e manda o player para lá com um redirecionamento; daí em diante o espectador assiste desse streamer até o fim da sessão. Entre os relatórios dos streamers o central conta também os espectadores que acabou de direcionar, então cem players que chegam em um segundo são divididos igualmente em vez de irem para uma única máquina.
Um streamer que parou de reportar ao central sai da escolha quando expira seu prazo de vida (liveness_ttl_secs, 30 segundos por padrão). Os espectadores que já reproduzem a partir dele terminam ou se reconectam sozinhos; os pedidos novos vão para as cópias vivas, e o link não muda. O streamer que volta recebe espectadores de novo após seu primeiro relatório. Um asset sem nenhuma localização viva responde 503 com Retry-After.
A escolha do streamer para os streams funciona de outro modo e aqui não muda: veja Reprodução do stream.
O que o console mostra¶
No cartão do asset a tabela Localização mostra cada streamer com o asset: original ou cópia, status, revisão e Espectadores — quantas sessões deste asset são reproduzidas a partir dele agora.

Na seção Sessões uma sessão VOD fica na coluna Stream com a chave do asset e leva ao seu cartão; a coluna Streamer mostra de qual máquina o espectador assiste. Na página Streamers a coluna Sessões dá a visão geral por máquina.
O que vem a seguir¶
- Transcodificação de VOD — modelos de asset, tarefas e seus cartões.
- Catálogo VOD — o cartão do asset, as localizações e os links de reprodução.
- Configurações do streamer — armazenamentos VOD e papéis do streamer.