qcon rio 2015 - escalabilidade na plataforma de vídeos ao vivo

80 visualizações

Publicada em

Escalabilidade na plataforma de vídeos da globo.com, trocando rtmp para hls e todas mudanças necessárias pra enfrentar os usuários para copa do mundo 2014.

Como a apresentação tem animações caso queira ver a palestra animada acesse https://docs.google.com/presentation/d/1dzT0o6l8p9SBo-_gbZv7E5PCtSTiF2LJca2VD-2-KMU/edit?usp=sharing

#qcon #qconrj

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
80
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

qcon rio 2015 - escalabilidade na plataforma de vídeos ao vivo

  1. 1. Contos de escalabilidade na plataforma de vídeos da @globo.com
  2. 2. um timaço Leandro Moreira e mais times e pessoas... Daniel Martins Flávio Ribeiro Juarez Bochi Hugo Roque Robson Soares Rafael Borsani Bernardo Camilo Lucas Mundim
  3. 3. vamos falar sobre vídeo ao vivo vod é outra história lifelife passadoagoraao vivo vod
  4. 4. {rtmp} no princípio encoderh264+aacrtmptcp h264+aacrtmptcp player flash firewall 1935 1º 2º3º 4º
  5. 5. {rtmp} pontos positivos atraso mínimo (2-5s) funcionava
  6. 6. {rtmp} problema :: instrumentação
  7. 7. {rtmp} problema :: soft. proprietário 01110000 01101001 01101011 01101101 01101001 01101110 00100000 00110011
  8. 8. {rtmp} problema :: escalabilidade $$$$$
  9. 9. {rtmp} problema :: escalabilidade
  10. 10. FIFA 2010 World Cup AFRICA dados ● ~= 285k usuários simul. * ● bitrate máximo 800 Kbps *pico
  11. 11. eis que surgem os multi-devices... hls h264+aacrtmptcp h264+aacrtmptcp h264+aacrtmptcp hls
  12. 12. {hls} o que é? 240p 480p 720p stream original seg1.ts seg2.ts seg3.ts
  13. 13. {hls} como funciona? /variant.m3u8 #EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=240 240p.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=480 480p.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=720 720p.m3u8 /240p.m3u8 #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:5, seg1.ts #EXTINF:5, seg2.ts #EXTINF:5, seg3.ts /480p.m3u8 #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:5, seg1.ts #EXTINF:5, seg2.ts #EXTINF:5, seg3.ts /720p.m3u8 #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:5, seg1.ts #EXTINF:5, seg2.ts #EXTINF:5, seg3.ts
  14. 14. {hls} como funciona? seg1.ts seg2.ts seg3.ts seg4.ts 240p.m3u8 480p.m3u8 720p.m3u8 seg1.ts seg2.ts seg3.ts seg4.ts seg1.ts seg2.ts seg3.ts seg4.ts 1 - GET /variant.m3u8 (text) 2 - GET /720p.m3u8 (text) 240p.m3u8 variant.m3u8 480p.m3u8 720p.m3u8 3 - GET /seg3.ts (bin) 4 - GET /seg4.ts (bin) 5 - GET /720p.m3u8 (text) 6 - GET /seg5.ts (bin) 7 - GET /seg6.ts (bin) 8 - ... http http seg3.ts seg4.ts seg5.ts seg6.ts seg3.ts seg4.ts seg5.ts seg6.ts seg3.ts seg4.ts seg5.ts seg6.ts
  15. 15. {hls} primeira solução encoderh264+aacrtmptcp h264+aachttptcp player flash 2º3º 5º 4º android ios 1º
  16. 16. {hls} geração e distribuição rtmp http manifest (m3u8) video (ts) files location ~ /hls { root "/vol/hls/"; } dest = "/vol/hls"; BE FE
  17. 17. {hls} resultado escalabilidadeporta:80 UX instrumentação 2G 4G Wifi 1080p 720p 320p Caching
  18. 18. {hls} intrumentação Graphite ● status code ● request t. ● cache hit ● cpu usage ● memory ● buffer rate ● bitrate ● ... time-series data graph api http enqueue dequeuemetric x t snmp metric x t agents
  19. 19. {hls} sauron Graphite
  20. 20. FIFA 2014 World Cup Brasil 45:0000:00 2002 45:0000:00
  21. 21. {hls} DVR na prática /720p.m3u8 #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:5, seg1.ts #EXTINF:5, seg2.ts #EXTINF:5, seg3.ts /720p.m3u8 #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:5, seg1.ts #EXTINF:5, seg2.ts #EXTINF:5, seg3.ts #EXTINF:5, seg4.ts #EXTINF:5, seg5.ts #EXTINF:5, seg6.ts #EXTINF:5, seg7.ts #EXTINF:5, seg8.ts #EXTINF:5, seg9.ts #EXTINF:5, seg10.ts
  22. 22. ingest {hls} tolerando o DVR frontend encoderh264+aacrtmptcp h264+aachttptcp flash player 2º3º 5º 4º android ios 1º
  23. 23. {hls} desafios do DVR :: failover não tinha tolerância a falhas #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:10 #EXTINF:5, seg10.ts #EXTINF:5, seg11.ts #EXTINF:5, seg12.ts #EXTINF:5, seg13.ts #EXTINF:5, seg14.ts #EXTINF:5, seg15.ts #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:5, seg1.ts
  24. 24. {hls} desafios do DVR :: storage 2h * 60m * 60s / 5s * 4.5mb ~= 6.4GB }1.6MB 1.1MB 0.8MB 0.5MB 0.3MB 0.1MB 4.5MB por 5s 2 jogos + 4 streams ~= 38.4GB 02:00:0000:00:00
  25. 25. {hls} 38GB cabem na RAM ingest frontend daemon: monitora mudanças nos arquivos e salva hls embed-script: busca, cria manifests e serve hls (chunks)
  26. 26. {hls} eleições 2014 muitos sinais ao vivo que não cabiam em um nó somente
  27. 27. {hls} do redis para o cassandra ingest frontend daemon: monitora mudanças nos arquivos e salva hls embed-script: busca, cria manifests e serve hls (chunks)
  28. 28. {hls} cluster de cassandra (RF=2) c1 c2 c3 c4 96 cores 256 GB 4TB 99% read latency < 25ms 99% write latency < 30ms 65 Mbits/s 4 nodes
  29. 29. multi data centers (SP & RJ) NET Oi Tim SP BGP announcement 186.192.81.0/24 NET Oi Tim RJ 186.192.81.2 BGP announcement 186.192.81.0/24
  30. 30. FIFA 2014 World Cup Brasil dados ● > 500k usuários simul. * ● ~= 125.000 req/s de vídeos * ● > 580 Gbps * *jogo ARG vs SUI
  31. 31. FIFA 2014 World Cup Brasil dados ● ~= 1600 anos assistídos * ● > 40M visualizações de vídeo * ● ~= med. 6 Gbps, max 19 Gbps ** *soma total **por nó
  32. 32. software livre dessa história m3u8 parser cassandra driver clappr evostream api live_thumb nginx-audio-track-module BemTV iprange
  33. 33. futuro (na verdade agora)
  34. 34. Perguntas? OBRIGADO!

×