Name: Globo-Live-Cache
Owner: Globo.com
Description: Configuração de caching de vídeos ao vivo da Globo.com
Created: 2014-08-18 16:48:30.0
Updated: 2017-11-07 15:50:03.0
Pushed: 2017-11-06 16:28:51.0
Homepage: null
Size: 91
Language: Shell
GitHub Committers
User | Most Recent Commit | # Commits |
---|---|---|
Roberto Soares | 2014-10-23 17:07:59.0 | 1 |
Leandro Moreira | 2014-10-23 17:24:22.0 | 8 |
Igor Macaubas | 2017-11-06 16:28:46.0 | 3 |
Juarez Bochi | 2014-08-19 13:42:44.0 | 1 |
Other Committers
User | Most Recent Commit | # Commits | |
---|---|---|---|
Igor Macaubas | macaubas@maca-retina.local | 2017-11-06 16:25:02.0 | 1 |
ÇÃO: Esta documentação está deprecated, desde que adotamos SSL na entrega de vídeos. Estamos
endo-a no ar somente por razões históricas. NÃO FUNCIONA. Está em nosso roadmap a criação
m novo projeto focado em oferecer cache em provedores, stay tunned :-)
A documentação a seguir descreve o que fazer para cachear vídeos ao vivo da Globo.com.
A entrega de vídeo ao vivo da Globo.com usa o protocolo HLS de acordo com a RFC-2616 do HTTP 1.1: seções 13 e 14. Portanto, basta que seu servidor de proxy seja compatível com o padrão para que o cache seja efetivo.
Cache é o mecanismo para armazenamento temporário de objetos, neste caso, pedaços de vídeos. Uma definição mais formal e completa sobre web-caching pode ser encontrada na wikipedia.
Web cache é um armazenamento temporário no disco rígido de páginas web, imagens e outros documentos utilizando técnicas de cache para reduzir o uso largura de banda disponível, aumentar a velocidade do acesso, entre outras vantagens.
A correta utilização de um cache resulta em:
Basicamente, quando um usuário atrás de um proxy configurado acessa um vídeo, ele realiza várias requisições http, possibilitando ao proxy armazenar respostas para requisições idênticas, evitando o tráfego de saída para um arquivo anteriormente requisitado.
Um possível fluxo para exemplificar o funcionamento (USR1 e USR2 são dois usuários distintos na rede, PROXY um servidor proxy):
SR1 solicita vídeo 23.ts ao PROXY
ROXY ainda não tem cache para objeto 23.ts
ROXY solicita vídeo 23.ts a GLOBO.COM
ROXY armazena resposta da globo e atende USR1
SR2 solicita pedaço de vídeo 23.ts ao PROXY
ROXY responde diretamente ao USR2
Para implementar um proxy você pode instalar o Squid. Instruções de instalação podem ser encontradas em seu site oficial.
Na instalação padrão, o Squid2 já faz caching baseado no cabeçalho das respostas, o que já atende aos vídeos ao vivo da Globo.com. Um exemplo de resposta pode ser visto abaixo:
TP/1.0 200 OK
rver: nginx
te: Fri, 15 Aug 2014 19:06:01 GMT
ntent-Type: video/mp2t
ntent-Length: 122200
pires: Fri, 15 Aug 2014 22:06:01 GMT
che-Control: public, max-age=10800
a: 1.0 localhost (squid/3.1.19)
nnection: keep-alive
Neste caso, o Squid vai seguir as regras do cabeçalho Cache-Control:public, max-age=10800
que informa que este recurso pode ser cacheado e por quanto tempo.
observação importante é que nem todos os vídeos ao vivo da Globo.com são cacheáveis.
As respostas do domínio *.glbvid.com
e com extensão ts
, mas sempre respeitando os cabeçalhos.
Os arquivos terminados com a extensão m3u8
e bin
. Fazer caching desses arquivos pode degradar a experiência do usuário.
Execute os seguintes comandos:
t clone https://github.com/globocom/Globo-Live-Cache
Globo-Live-Cache
grant up
O comando vagrant up
vai provisionar uma máquina virtual devidamente configurada com Squid3.
a configuracão, todos os usuários tem acesso irrestrito.
Depois, configure seu browser para apontar para o proxy 192.168.33.10:3128. Caso queira verificar seu funcionamento:
grant ssh
ant@precise32: $ sudo tail -f /var/log/squid3/*log
Vale ressaltar que é possível exportar a máquina virtual do Vagrant para provedores cloud, como por exemplo: Amazon EC2 e Digital Ocean.
Em testes realizados, percebemos que quando 10 usuários utilizam o proxy para acessar vídeos ao vivo da Globo.com, o ganho é de aproximadamente 90% de banda sobre vídeos. Aumentando o número de usuários para 1000, o ganho chega a 99,9%. Assim, se considerarmos um arquivo de vídeo no bitrate mais alto, o ganho pode ser em torno de 1Gb por pedaço de vídeo.
Os números acima são estimativas feitas a partir de testes com ab simulando usuários simultâneos com conexões para o maior bitrate.