Basicamente, 2 técnicas são utilizadas em um sistema de video-on-demand
usando o modelo cliente/servidor, o Batching e o Patching.
Batching
O batching diminui a requisição de banda do servidor ao transmitir o
stream (fluxo) para múltiplos clientes. Como em video-on-demand é necessário
que o vídeo seja tocado desde o início, um cliente novo não pode simplesmente
se juntar à uma transmissão que já começou.
Um exemplo simples de protocolo batching: o servidor aloca K canais que
transmitem numa certa taxa. Cada canal transmite o vídeo inteiro e os inícios são
separados igualmente pelos canais. Neste modelo, o tempo máximo de espera
de um cliente para um vídeo de duração S é S/K.
Patching
O batching sozinho não pode suportar um serviço de video-on-demand de
verdade, pois sempre terá um certo tempo de espera. Para utilizá-lo, a técnica de
patching deve ser utilizada em conjunto.
Quando um cliente chega atrasado para um próximo fluxo de transmissão
(ou seja, o tempo de espera para o próximo fluxo é grande demais), o cliente se
junta ao fluxo anterior. Porém, o cliente ainda precisa da parte inicial do vídeo.
Como essa parte é quase única (ou seja, só o cliente que chegou nesse momento
estará pedindo), o fluxo será mandado em unicast para esse cliente. Isso aumenta
bastante a exigência de banda do servidor.
Problemas
Analisando a arquitetura cliente/servidor, vemos que quando ela é aplicada à
video-on- demand, surgem os seguintes problemas, comparando-a com
arquitetura distribuída:
- Falta de confiança
Com o video-on-demand centralizado, o servidor é um ponto de ataque. Dessa
forma, o sistema não é confiável. Uma falha ou indisponibilidade do servidor
resulta na queda de todo o sistema.
- Falta de escalabilidade
Todos os sistemas de video-on-demand baseados em cliente/servidor tem em
comum o fato da banda exigida do servidor ser muito alta. Mesmo em videos de
baixa qualidade (como os do YouTube) consomem cerca de 300 Kbps. Pro
YouTube, por exemplo, o total de banda estimado é 200Tb por dia! Um aumento
no número de usuários simultâneos irá aumentar a exigência de banda, e se essa
capacidade extra não estiver disponível, ocorerrá denial-of-service.