QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx...

Preview:

Citation preview

encoder

CDN

ingest h264+aacrtmptcp

h264+aac httptcp

flash player

2º3º

ios

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; } }}