×

🌐 Distribution

Nginx · Redis · SSL · Lua

Glavno → Tok → Arhitektura CDN

Pregled

Glavni strežnik deluje samo kot orkestrator — avtentikacija, generiranje žetonov, usmerjanje CDN. Nikoli se ne dotika podatkov toka. Tokovi tečejo neposredno od stream server prek proxy CDN do strank. Vsako odjemalsko omrežje ima lokalni CDN za nizko zakasnitev. Javni CDN-Z služi kot rezerva.

Avtorizacija, žetoni, orkestracija. Ni podatkov o toku.

Validacija žetonov prek Redisa, proxy za stream server.

Strežniki tokov virov (HLS/MPEG-TS).

IPTV predvajalnik (VLC, STB, mobilna aplikacija).

Potek zahteve

Odjemalec preverja pristnost (API B2C / povezava za predvajanje)

Glavna ustvari žeton v Redis (izvorna URL, 24h TTL)

Main preusmeri stranko na najboljši CDN (302)

Odjemalec sledi preusmeritvi na CDN

CDN potrdi žeton prek glavnega Redisa (Net X)

CDN proxy tok iz stream server do odjemalca

Topologija omrežja

nadomestni

javni internet

Preverjanje stanja in prevzem

CdnRouter preverja stanje CDN vsakih 30 s prek končne točke /health. Če najboljši CDN za odjemalčevo podomrežje ne deluje, se vrne na naslednji ujemajoči se CDN (razvrščen po dolžini predpone CIDR, najprej najbolj specifičen).

Ni zdravega CDN → lokalno /cdn/ na glavnem (varnostna mreža)

Podrobnosti žetona

Oblika

Ključi Redis

URL preusmeritve

Podprte oblike in normalizacija URL

CdnToken samodejno zazna in obravnava različne izvorne oblike URL-jev. Za MPEG-TS ali gole poti pretoka preišče strežnik za razpoložljivost HLS prek zahteve HEAD.

HLS seznam predvajanja — direktno uporabljen, glavni seznam predvajanja filtriran na eno video različico + vse zvočne sledi

Neobdelani MPEG-TS — samodejno pretvorjen v HLS, če strežnik to podpira (stream server to vedno podpira), v nasprotnem primeru proksiran v surovem stanju z izklopljenim medpomnilnikom

Datoteka (mp4, m4s, ts, mkv itd.) — proksirana neposredno takšna, kot je, brez pretvorbe

DASH (mpd) — posredovano neposredno kot je

Nginx Master Playlist Filter

Za HLS tokove nginx filter telesa prepiše glavno igralno listo (index.m3u8), da obdrži samo prvo video različico med ohranjanjem vseh zvočnih/podnaslova sledi. To preprečuje, da bi igralci prenašali več kvalitete hkrati.

Prej (od stream server)

Po (dostavljeno stranki)

Komponente

Generira 32-mestne šestnajstiške žetone, samodejno zazna format (HLS/MPEG-TS/datoteka), normalizira URL, shrani v Redis s SETEX (24-urni TTL).

Poišče najboljši zdrav CDN glede na IP odjemalca (ujemanje CIDR + preverjanje stanja). Nadomestna veriga.

Samodejno namesti nginx + lua-resty-redis + Redis na strežnike CDN. Vstavi lokacijo /cdn/ v glavni nginx.

Model DB: domena, ip_scope (CIDR), redis_host (glavni IP na Net X), zdravstveno stanje.