×

🌐 Distribution

Nginx · Redis · SSL · Lua

Galvenais → Straume → CDN arhitektūra

Pārskats

Galvenais serveris darbojas tikai kā orķestrators — autentifikācija, tokena ģenerēšana, CDN maršrutēšana. Tas nekad neapstrādā straumes datus. Straumes plūst tieši no stream server caur CDN proksijiem uz klientiem. Katram klientu tīklam ir lokāls CDN zema aizkaves nodrošināšanai. Publiskais CDN-Z darbojas kā rezerves variants.

Autentifikācija, tokeni, orķestrācija. Nav straumes datu.

Token validācija, izmantojot Redis, pāradresācija uz stream server.

Avota straumes serveri (HLS/MPEG-TS).

IPTV atskaņotājs (VLC, STB, mobilā lietotne).

Pieprasījuma plūsma

Klients autentificējas (B2C API / atskaņošanas saite)

Galvenais serveris izveido tokeni Redis (avota URL, 24h derīguma termiņš)

Galvenais serveris pāradresē klientu uz labāko CDN (302)

Klients seko pāradresācijai uz CDN

CDN validē tokeni, izmantojot Main Redis (Net X)

CDN pāradresē straumi no stream server uz klientu

Tīkla topoloģija

rezerves variants

publiskais internets

Veselības pārbaude un failover

CdnRouter pārbauda CDN veselību ik pēc 30s caur /health gala punktu. Ja labākais CDN klienta apgabalam ir bezsaistē, tas pārslēdzas uz nākamo atbilstošo CDN (kārtots pēc CIDR priekšpēdējo garuma, viskonkrētākie pirmie).

Nav veselīgu CDN → lokāls /cdn/ uz Main (drošības tīkls)

Tokena detaļas

Formāts

Redis atslēgas

Pāradresācijas URL

Atbalstītie formāti un URL normalizācija

CdnToken automātiski atpazīst un apstrādā dažādus avota URL formātus. MPEG-TS vai tukšām straumes ceļiem tas veic HEAD pieprasījumu, lai pārbaudītu HLS pieejamību.

HLS playlist (m3u8) — proxy un video varianta pārrakstīšana (pirmā video sliedīte)

MPEG-TS (ts) — tieši proxy, bez konvertēšanas

Fails (mp4, m4s, ts, mkv, utt.) — tieši proxy, bez konvertēšanas

DASH (mpd) — tieši proksēts kā ir

Nginx galvenās atskaņošanas saraksta filtrs

HLS plūsmām nginx ķermeņa filtrs pārraksta master playlist (index.m3u8), lai saglabātu tikai pirmo video variantu, saglabājot visus audio/apakšvirsrakstu celiņus. Tas novērš spēlētāju lejupielādi ar vairākām video kvalitātēm vienlaicīgi.

Pirms (no stream server)

Aiz (nodots klientam)

Komponentes

Ģenerē 32-char hex tokenus, automātiski noteic formātu (HLS/MPEG-TS/file), normalizē URL, glabā Redis ar SETSE (24h TTL).

Atrod labāko veselo CDN pēc klienta IP (CIDR atbilstība + veselības pārbaude). Fallback ķēde.

Automātiski instalē nginx + lua-resty-redis + Redis CDN serveros. Ievieto /cdn/ atrašanās vietu galvenajā nginx.

DB modelis: domain, ip_scope (CIDR), redis_host (Galvenais IP uz Net X), veselības statuss.