A plataforma de vídeos da globo.com
Analisando apenas um evento de
2018
> 500K Usuários simultâneos
(live)
POP SPPOP RJ
*intervalo
422K req/s
*só na cdn live de vídeos
84.2Gbps
*pico de uma máquina
1Bi minassistidos por mês
(vod)
Usuárioconsumidor Usuário
produtor
datastore
Player CDN Ingest
Plataforma de vídeos
datastore
Player IngestCDN
CDN :: principais componentes
CDN :: o quê?
player
CDN
GET /v
ideo1.
mp4
CDN :: load balancing
player
CDN
?
Least conn
Round robin
Hash IP
...
CDN :: distribuição por região
SPRJ
ISPx
ISPyISPk
SPBGP announcement 186.192.81.0/24
ISPx ISPy
ISPk
RJ
186.192.81.2
BGP announcement 186.192.81.0/24
PoPPoP
CDN :: transbordo para CDN de terceiros
SPRJ
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 :: cachingfront-end back-end
1.mp41.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 statelessstateful 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 :: fluxo
API's
CDNads
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:
CodecResolução
AspectoBitrate
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