Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e...

29

Transcript of Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e...

Page 1: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação
Page 2: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de vídeos UOLMaisLoad Balacing + Proxy + Cache de Arquivos

George Vieira Jr – [email protected]

Page 3: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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

Page 4: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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.

Page 5: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

Page 6: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

•Arquitetura antiga

● Apache + Squid

Page 7: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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

Page 8: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

O slide obrigatório sobre Longtail

Page 9: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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%

Page 10: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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

Page 11: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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)

Page 12: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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)

Page 13: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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?

Page 14: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

Resultados

•Queda de IO nos storages

Início da migração ->(Fevereiro 2012)

Hoje ->

Resultados

Page 15: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

Resultados

•Hit Rate Alto

Antes da migração ->(Agosto 2011)

Hoje ->

Resultados

Page 16: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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

Page 17: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

Olhando debaixo do capô

Revelando a “mágica”

Page 18: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

Roteiro

croupier

Page 19: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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)

Page 20: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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

Page 21: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validaçã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

Page 22: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

Page 23: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

Roteiro

balaiobalaio

Page 24: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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.

Page 25: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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

Page 26: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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)

Page 27: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Plataforma de Vídeos UOLMais 22/04/2012

Balaio – Screenshot

Balaio – Interface de monitoração (por máquina)

Page 28: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

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

Page 29: Plataforma de vídeos UOLMais - qconsp.com · storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação

Perguntas?