View
214
Download
0
Category
Preview:
Citation preview
Plataforma de vídeos UOLMaisLoad Balacing + Proxy + Cache de Arquivos
George Vieira Jr – gvieira@uolinc.com
Plataforma de Vídeos UOLMais 22/04/2012
Agenda
•O que é o UOLMais
•Problemas do passado
•Soluções avaliadas
•Premissas e desafios para o sistema
•Solução UOL● Resultados
● Croupier
● Balaio
Plataforma de Vídeos UOLMais 22/04/2012
UOLMais
• Plataforma de conteúdo multimídia do UOL● Vídeo, Fotos, Áudio, Slides, Texto
• mais.uol.com.br● Administração/visualização do conteúdo● Usuários comuns (assinantes e visitantes)● Usuários editoriais (internos e parceiros)
• tvuol.uol.com.br● Conteúdo editorial do UOL
• Parceiros UOL● band.com.br, folha.com, TV Caras, TV Trama, etc.
Plataforma de Vídeos UOLMais 22/04/2012
Plataforma de Vídeos UOLMais 22/04/2012
•Arquitetura antiga
● Apache + Squid
Plataforma de Vídeos UOLMais 22/04/2012
Características do Sistema
•Variações de tamanhos de arquivos de 5 MB a 4 GB
•Perfil de clientes por tipo de mídia● Banda dos usuários heterogênea● Conexões de longa duração em um protocolo sem suporte inerente a
falhas de conexão
•Acesso em grande parte do acervo diariamente
•Longtail
•Thundering herd- Vídeos repentinamente populares
•Interface com o storage é HTTP / DAV
Plataforma de Vídeos UOLMais 22/04/2012
O slide obrigatório sobre Longtail
Plataforma de Vídeos UOLMais 22/04/2012
Problemas – Longtail
•Longtail acentuado● 64% das mídias são chamadas apenas 1 vez por dia ● 73% dos requests se concentram nas 350 mídias mais vistas.
73%27%
Plataforma de Vídeos UOLMais 22/04/2012
0
10000
20000
30000
40000
50000
60000
70000
80000
90000
Quantidade de Requests
Meses
Qua
ntid
ade
de M
ídia
s
Problemas – Imprevisibilidade sazonal
Plataforma de Vídeos UOLMais 22/04/2012
Soluções Avaliadas
● Disk Cache grava em hashNginx
● Seek não funciona com proxy
● Arquivo precisa ser copiado inteiro antes de ser lido
Lighttpd● Seek não funciona com proxy● Apresentou degradação na taxa de transferência com proxy● Content-Lenght falhava com proxy
•Bom● Boa experiência com cache de imagens● Na versão 3 só faz 1 fetch com backend
Varnish
•Ruim● Não performa em disco● Vídeos entram todos em arquivos binários (heap)
Plataforma de Vídeos UOLMais 22/04/2012
Premissas e Desafios
•Não deixar vídeo “quente” sair do cache
•Aliviar carga no storage (uso máximo 60% capacidade)
•Seek
•Vídeos HD (720p, 1080p)
•Melhorar experiência do usuário
•Concluir os pontos acima com o menor custo possível
•Cache eficiente (hit-rate)
Plataforma de Vídeos UOLMais 22/04/2012
Solução UOL
Por que não agrupar as boas características de cada solução em uma única?
Plataforma de Vídeos UOLMais 22/04/2012
Resultados
•Queda de IO nos storages
Início da migração ->(Fevereiro 2012)
Hoje ->
Resultados
Plataforma de Vídeos UOLMais 22/04/2012
Resultados
•Hit Rate Alto
Antes da migração ->(Agosto 2011)
Hoje ->
Resultados
Plataforma de Vídeos UOLMais 22/04/2012
Resultados
•Clientes● Assistem a todos os tipos de mídia com qualidade
•Produção● Melhor aproveitamento dos hardwares● Redução de incidentes (~2.000 mensais para 0)● Crescimento de tráfego em mais de 120%● Melhor uso da capacidade de storage● Flexibilidade para lidar em tempo real com
balanceamento e thundering herd
Resultados
Plataforma de Vídeos UOLMais 22/04/2012
Olhando debaixo do capô
Revelando a “mágica”
Plataforma de Vídeos UOLMais 22/04/2012
Roteiro
croupier
Plataforma de Vídeos UOLMais 22/04/2012
Storage 1(Spare)
Cenário Inicial
browser
Squid 1 Squid 2 Squid 3...
DNS
Storage 1 Storage 2 Storage N
storage.mais.uol.com.br
Autorizaçãoe distribuição
round robin DNS Request pelo id da midia
* Tradução de mídia por file* Validação de visibilidade* Distribuição e esparsamentono file system
Proxy reverso dos filesnos storagesStorage 2
(Spare)Storage N
(Spare)
Plataforma de Vídeos UOLMais 22/04/2012
Croupier – Mudança na arquitetura
browser
Cache 1 Cache 2 Cache N...
API do player requisita qual servidor de cache a mídia se encontra.
Croupier
Usando a regra de distribuição,informa diretamente o domínio do servidor a ser acessado.
videoN.mais.uol.com.br
Storage 1(Spare)
Storage 1 Storage 2 Storage N
Storage 2(Spare)
Storage N(Spare)
Autorizaçãoe distribuição
Plataforma de Vídeos UOLMais 22/04/2012
Regra de distribuição
• Permite configurar distribuição da carga por máquina (nó)
• Busca estatísticas de carga de cada servidor
• Permite segmentar tipo de vídeo x hardware específico● Máquinas com muita capacidade de disco, recebem cache
heterogêneo● Máquinas capacidade de CPU recebem “seek” e “SSL”● Máquinas com muita RAM e rede 10G recebem os vídeos
“bombados”
• Capacidade de reação● Vídeos populares se espalham em vários nós● Vídeos longtail são estimulados a ir sempre no mesmo nó● Remoção de servidores em estado crítico
Plataforma de Vídeos UOLMais 22/04/2012
Plataforma de Vídeos UOLMais 22/04/2012
Roteiro
balaiobalaio
Plataforma de Vídeos UOLMais 22/04/2012
-Problema do “cobertor curto” com as demais soluções tentadas● Experiência para combinar o que funciona em 1 único server
-Limite de banda de cada máquina (1Gb)● Limite de download por cliente / evasive.● Bloqueio de user-agents / referers.
-Aumento da média de tamanho individual dos vídeos (vídeos HD)
-Balanceamento / Monitoração.
-Regras específicas para lidar com longtail e thundering herd.● Níveis de cache conforme a audiência do vídeo.
-Minimização de chamadas de fetch para o backend● Segmentação de arquivos● Fetch “colapsado” / download preventivo do segmento.
-Foco em vídeos (conexões longas e arquivos grandes)
-Ponto fraco do Java (CPU + GC) não exerce fator limitante (zero-copy).
-Toda arquitetura da aplicação é assíncrona: Java NIO.2 + Netty.
Plataforma de Vídeos UOLMais 22/04/2012
Balaio – Níveis de cache
Old
Young
Popular
HD
RAMDISK
RAMDISK
video.mp4.seg1video.mp4.seg1 1 hit
x hits
y hits
Plataforma de Vídeos UOLMais 22/04/2012
Internet
Balaio – Segmentação de arquivos
video.mp4
file server(apache)
video.mp4.seg1
balaio
video.mp4.seg2
video.mp4.segN
HTTP GET video.mp4
HTTP GET(Range-Request)
Plataforma de Vídeos UOLMais 22/04/2012
Balaio – Screenshot
Balaio – Interface de monitoração (por máquina)
Plataforma de Vídeos UOLMais 22/04/2012
Balaio – Screenshot
Balaio – Vantagens
• Requests de cliente “colapsados” pro backend
• “Seek” com custo de processamento muito baixo● Primeiro acesso cria tabela de keyframes● Demais acessos remontam header e custo de CPU é o custo de um
http range-request
• Redirect (HTTP 302) pra outro server, em caso de servidor em estado critico, ou servidor vir direto via Round-Robin DNS
• Baixa latência – novo paradigma + arquivos pequenos
• Alta escalabilidade horizontal
• Quanto maior o thundering heard, melhor
• Controle de banda adaptativo por bitrate
Perguntas?
Recommended