A plataforma de
vídeos da
globo.com
Analisando apenas
um evento de
2018
> 500K
Usuários simultâneos
(live)
POP SP
POP RJ
*intervalo
422K
req/s
*só na cdn live de vídeos
84.2
Gbps
*pico de uma máquina
99.3%
cache hit
????
> 1TB / dia
> 1PB / dia
1Bi min
assistidos por mês
(vod)
Usuário
consumidor
Usuário
produtor
datastore
Player CDN Ingest
Plataforma de vídeos
datastore
Player IngestCDN
CDN :: principais componentes
CDN :: o quê?
player
CDN
GET /video1.mp4
CDN :: load balancing
player
CDN
?
Least conn
Round robin
Hash IP
...
CDN :: distribuição por região
SP
RJ
ISPx
ISPy
ISPk
SPBGP announcement
186.192.81.0/24
ISPx ISPy
ISPk
RJ
186.192.81.2
BGP announcement
186.192.81.0/24
PoP
PoP
CDN :: transbordo para CDN de terceiros
SP
RJ
3rd party
CDN A
3rd party
CDN B
CDN :: distribuição por audiência
1k
videos.globo.com
v0.videos.globo.com
v1.videos.globo.com
v2.videos.globo.com10k
1m
CDN :: caching
front-end back-end
1.mp4
1.mp4
1.mp4
CDN :: estratégia para aumentar o hit
1k
videos.globo.com
v0.videos.globo.com
v1.videos.globo.com
v2.videos.globo.com10k
1m
CDN :: caching multi levels
https://
1st Browser
2nd RAM
3rd SSD
4th HDD
CDN :: caching priorizado
+ vistos
- vistos
CDN :: IO bounded
NODE
CDN :: caching escalar IO
NODE
CDN :: caching escalar IO
proxy_cache_path /mnt/disk1/cache keys_zone=disk1:100m ...;
proxy_cache_path /mnt/disk2/cache keys_zone=disk2:100m ...;
proxy_cache_path /mnt/disk3/cache keys_zone=disk3:100m ...;
split_clients $request_uri $cache {
33% disk1;
33% disk2;
* disk3;
}
CDN :: seja stateless
stateful stateless
1x
Caminho crítico
FE BE DS
CDN :: identificar serviços mínimos
*serviços importantes mas auxiliares
CDN :: melhorias constantes
Hardware (NIC, CPU …)
Kernel (Network, IO…)
Application (nginx, lua…)
CDN :: não compre antes de testar
TRY BEFORE YOU BUY
CDN :: roteia X % para o nó em teste
CDN :: métricas base
latência
503, 403...
taxa de
erros
bandausuários
CDN :: monitorar e aletar
datastore
CDN IngestPlayer
Player :: principais componentes
Player :: plugins
Player :: plugins
Player :: clappr
Player :: fluxo
API's
CDN
ads
analytics
datastore
Player CDN Ingest
Ingest / encoding :: principais componentes
Ingest / encoding
upload
packager
encoding
segmenter
security
metadata
Ingest / encoding :: desafios
Ingest / encodingIngest / encoding :: macro visão
Entrada
Fila
Saída
Data store
CDN
Encoder
Ingest / encodingIngest / encoding :: sanitização de entrada
Regras:
Codec
Resolução
Aspecto
Bitrate
Frame rate
...
Ingest / encodingIngest / encoding :: múltiplas saídas
1080p 720p 648p 504p 360p 144p
1080p 720p 648p 504p 360p 144p
1080p 720p 648p 504p 360p 144p
0-5s
5-10s
10-15s
1 video
N resoluções
x M formatos
x K segmentos de X segundos
x Y dispositivos
Obrigado,
Perguntas?
Github @leandromoreira

Dissecando a plataforma de vídeos da globo