55
A plataforma de vídeos da globo.com

A plataforma de vídeos da - qconsp.com · 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

Embed Size (px)

Citation preview

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

99.3% cache hit

????

> 1TB / dia

> 1PB / dia

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 :: clappr

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