Upload
others
View
4
Download
0
Embed Size (px)
●
●
●
encoder
CDN
ingest h264+aacrtmptcp
h264+aac httptcp
flash player
2º3º
5º
4º
ios
1º
seg1.tsseg2.tsseg3.tsseg4.ts
240p.m3u8480p.m3u8720p.m3u8
seg1.tsseg2.tsseg3.tsseg4.ts
seg1.tsseg2.tsseg3.tsseg4.ts
1 - GET /variant.m3u8 (text)
2 - GET /720p.m3u8 (text)
240p.m3u8
variant.m3u8
480p.m3u8 720p.m3u8
3 - GET /seg3.ts (video)
4 - GET /seg4.ts (video)
5 - GET /720p.m3u8 (text)
6 - GET /seg5.ts (video)
7 - GET /seg6.ts (video)
8 - ...
http
http
seg3.tsseg4.tsseg5.tsseg6.ts
seg3.tsseg4.tsseg5.tsseg6.ts
seg3.tsseg4.tsseg5.tsseg6.ts
CDN API's Ingest
CDN API's Ingest
2000ms4000ms
5000ms7000ms
5ms15ms
10ms30ms
2000ms5000ms
10s15s
CDN API's Ingest
2h * 60m * 60s / 5s * 4.5mb ~= 6.4GB
}1.6MB 1.1MB 0.8MB 0.5MB 0.3MB 0.1MB 4.5MB per 5s
agorapassado
CDN API's Ingest
19Gpbs maxconn: 70k, cpu affinity
15Gpbs maxconn: 40k, cpu affinity
12Gpbs maxconn: 25k, irqbalancepacket loss
4Gbps, no fine tuning
ISP X
ISP Y
20Gbps
5Gbps
IXP
ISP K
80Gbps
8Gbps
CDN
CDN
CDN
CDN
CDN API's Ingest
ISPx
ISPyISPk
SPBGP annou 186.192.81.0/24
ISPx ISPy
ISPk
RJ
186.192.81.2
BGP annou 186.192.81.0/24
PoPPoP
CDN API's Ingest
CDN API's Ingest
CDN API's Ingest
Caching
Segurança
Load balancer
Localização
Banda larga
Usuário simul.
Agendamento
Encoding
Escalável
Alta disponibilidade
Monitoração
CDN API's Ingest
IO
Network Bound
Stateless
Storage
CPU Intensive
CPU / GPU Intensive
Stateful
Video CODEC
Stateful
CDN API's Ingest
nginx
lua C
Cassandra nginx
linux
ruby python
redis MySql
golang
lua puppet
puppet
mongo
ruby
MySql
mongo
logstash logstash
graphite puppet
CDN API's Ingest
CDN API'sIngest CDN
foco de trabalho
JAN FEV ABR MAR ABR MAI JUN JUL AGO SET OUT NOV DEZ
CDN
O que é o projeto?
Qual o problema que esse projeto resolve?
Como rodar localmente?
Como fazer deploy?
Como rodar os testes?
Quais melhores práticas na linguagem X?
...
Source: https://twitter.com/Una
Source: https://twitter.com/Una
Source: https://twitter.com/Una
LINTs
Ruby-lint, python-lint, go-lint, xyz-lint
CDN API's Ingest
●●●●●●●●●
●●●●●
●
●
●
●
Existente
Novo
95%
5%
http { upstream production { s.api.intern.com; }
upstream new_production { new.s.api.intern.com; }
split_clients "${arg_token}" $appversion { 95% production;
* new_production; }
server { listen 80; location / { proxy_set_header Host $host; proxy_pass http://$appversion; } }}
●●●●●●
●●