B2C · Xtream · Reseller





Arhiivi salvestuse kihtidele
Kolmetasandiline arhiivisüsteem 500+ samaaegsele kliendile. Seadistage menüüs Config > Storage > Storage Tiers. Igal astmel on sõltumatu elutsükkel, võimsusarvutus ja varukäitumine.
Kodeerija
Kirjuta puhver
2h kuum aken (NVMe või tmpfs)
→ peegel (pidev)
HDD RAID 5
50 TB, säilitusaeg 14 päeva
→ eellaadimine nõudmisel
Esituse vahemälu
1 TB sooja vahemälu, 500+ klienti
Kliendid
Lõigud, mis on vanemad kui mirror_min_age_minutes, KOPEERITAKSE RAID-isse pidevalt. write_buffer hoiab 2h kuuma akna, nii et taaskerimise hiljutine esitus jääb kiirriistvara. Alles pärast evict_age_minutes (ja ainult kui kinnitatud peegleldud) kustutatakse lõigud write_bufferist. RAID-il on alati pikaajaline koopia — tunnikirjed pole.
Kiht
Eesmärk
Seaded
Kirjutuspuhver
Võtab segmente vastu 24/7, hoiab 2h kuuma akent kiireks hiljuti tagasikerimiseks, kaitseb RAID-i juhusliku IO eest. Seade võib olla füüsiline NVMe partitsioon (tootmine) või tmpfs (dev/test box ilma füüsilise NVMeta – vt tmpfs jaotist allpool).
device_path (plokiseade või 'tmpfs'), tmpfs_size_pct (10-50% MemAvailable kui tmpfs), mirror_min_age_minutes, evict_age_minutes, flush_threshold_percent (jõudsus flush trigger)
HDD RAID-arhiiv
Pikaajaline salvestusruum (vaikimisi 14 päeva). Saab pidevat koopiat kirjutuspuhvrist — järjestikused kirjutused, ilma tunnikirstuteta. Jätkab pärast algseadistust. RAID talub ühe ketta kadumist.
retention_days, raid_device, nginx_location, min_free_procent
Esituse vahemälu (valikuline)
Lugemispool vahemälu populaarsete failide jaoks, mis on vanemad kui 2 tundi (nt EPG järelejõudmine). Pärast populaarsusläve (3 tabamust / 5 min) täidetakse arhiivist nõudmisel. Seade võib olla NVMe või tmpfs.
prefetch_hours, max_sessions, eviction_policy (session/lru/fifo)
reaaliajal kirjutab × 2h = write_buffer hot akna suurus. Näide: 50 vooga × 8 Mbps × 2h ≈ 36 GB. Lisa ~30% juurdeandmine peegli mahajäämiste jaoks → ~50 GB write_buffer piisab 50 vooga jaoks. RAID suuruselt täis säilivuse: 50 × 8 Mbps × 14 päeva ≈ 6 TB.
Stream.dvr_file_path/2 katsetab write_buffer → playback_cache → arhiivi järjekorras. Lõik 2h kuuma aknas teenindatakse write_bufferist emakeele kiirusega, kuigi see on ka RAID-l. Nginx X-Accel-Redirect serveerib failid otse, minemata Phoenixi kaudu.
Iga kiht võib kasutada RAM-iga toetatud tmpfs virtuaalset ketast füüsilise seadme asemel. Kasulik arenduskastitele, millel puudub varuosa NVMe, või efemeersetele testkeskkonnale. Salvestamisala juhtkondade seadme rippmenüü sisaldab 'tmpfs (virtuaalne ketas RAM-ist)' valikut, mis asendab seadme tee valija protsendiliuguriga.
Eraldamine määratakse MemAvailable protsendiga (alates /proc/meminfo) — samm 10, kehtivad väärtused 10/20/30/40/50. Kõva korrus 10% (kinnitamine lükab tagasi allpool). Kõva lagi 50%. Vaikimisi 30%. 100 GB MemAvailable arvutil: 10% = 10 GB, 30% = 30 GB, 50% = 50 GB. Suurust arvutatakse ümber ja ümber paigaldatakse reaalajas, kui liugur liigub ja salvestatakse.
Kui arvutatud sihtmärk ületaks 60% praegusest MemAvailable, paigaldamine keeldub ja kiht jääb ühenduseta (Stream.archive_path kukkub järgmisele terve kihile). Takistab agressiivset seadistust BEAM OOM kaudu. Kaitse jookseb käivitumisel ja iga UI salvestuse ajal.
tmpfs elab RAM-is — mis tahes lennu ajal puhvrisisu läheb hosti taaskäivitamisel KAOTAMA. Ettevalmistuse ajal kirjutatud fstab-kirje ühendab tühjad tmpf-failid järgmisel alglaadimisel automaatselt uuesti, kuid vanu segmente ei tagastata. Peegeldamine arhiivimisel jätkub tavaliselt kõige puhul, mis oli juba enne taaskäivitamist peegeldatud – ainult viimane peegeldamata aken (tavaliselt < mirror_min_age_minutes väärt) läheb kaotsi. Tootmiseks kasutage füüsilist NVMe seadet; tmpfs on mõeldud dev/test asenduseks.
Kasutage tmpfs write_buffer jaoks kui: (a) dev/test kasti pole varuosa NVMe, kuid soovite siiski täielikku DVR torujuhtme käitamist integreerimise testimiseks, (b) operaator soovib kinnitada peegli + arhiivi käitumist ilma NVMe ette otsima, (c) efemeerse testimise, kus kadu-algseadistuse korral on aktsepteeritav. Ärge kasutage tmpfs tootmises — RAM on volatiilne ja mitmed suurusjärgud kallim kui NVMe säilivuse GB kohta.
Kui kirjutuskiht on tmpfs, kasutab StorageTierFlush tihedamaid vaikimisi — mirror_min_age 2 min, evict_age 15 min (vs 5 min / 120 min füüsilises NVMe). RAM on kallim kui disk nii et valtsitud kuum aken hoitakse väiksem. Alistage env vars MIRROR_MIN_AGE_MINUTES / EVICT_AGE_MINUTES vajadusel.
Tasemed konfigureeritakse üks kord menüüs Config > Storage > Storage Tiers ja luuakse automaatselt – hostis pole käsitsi mkfs/mount/fstab redigeerimist. StorageTier.ensure_all_provisioned/0 käivitub igal SystemInitializeri alglaadimisel ja on idempotentne: juba ühendatud tasemed jäetakse vahele, puuduvad seadmed on no-ops, tmpfs-tasemed ühendatakse pärast taaskäivitamist puhtalt uuesti.
Esimese käivituse ajal (DB-s puudub kirjutuskiht), süsteem loob automaatselt tmpfs-toetatud kirjutuskihi 30% MemAvailable eraldamisega, paigaldamise punkt /mnt/nvme_write. See annab töötava DVR torujuhtme otse-ees iga vara piisava RAM-iga. Operaator võib hiljem seadet füüsilise NVMe-ga vahetada ilma muude kihtide seadistused kaotamata.
Stream.archive_path/1 tagastab esimese 'terve' kihi — write_buffer kui paigaldatud+kirjutav+free_pct turvalisuslae kohal, muidu langeb arvhiiv (halvenema režiim). Turvalisuse korrus 20% tmpfs (RAM-range), 2% plokkseadmete jaoks. tier_health lõpp-punkt paljastab per-kiht paigaldatud/kirjutav/free_pct jälgimiseks.
Tmpfs_size_pct muutmine kasutajaliideses käivitab umount + remount uue suurusega on Save. Aktiivsed DVR kirjutised on lühidalt paused (montaaž üleminek < 1 s). Soovitus: muutke tmpfs suurust ainult siis, kui DVR kirjutamise määr on madal, ja kaaluge vooga pärast taaskäivitamist, et veenduda, et nad uue paigaldamise korralikult üles korjavad.
Base URL — OSTV mängija
Paketi väljad
Pakettide API
Parooli poliitika
Edasimüüja API
Seadistused
Kasutajaväljad
Kasutajate haldamine
Baas-URL — OSTV mängija
OSTV mängija rakendus võimaldab kasutajatel muuta serveri baas-URL-i (API aadress). See funktsioon on saadaval ainult kasutajatele, kelle pakkuja on root.
Põhjus: baas-URL-i muutmine on mõeldud ainult administraatoritele/root-kasutajatele, et nad saaksid vahetada servereid. Tavakasutajatel on fikseeritud baas-URL.
Kasutajaväljad
Pakettide API
Tagastab kõigi aktiivsete pakettide loendi hindade ja arveldusperioodidega.
Hallatavate kasutajate loend (edasimüüjad / pakkujad).
Tagastab konkreetse hallatava kasutaja krediidisaldo.
Paketi väljad
Edasimüüja API
API edasimüüjatele/pakkujatele. Autorisatsioon: Authorization: Bearer mtk_... Edasimüüja näeb ainult oma kliente (owner_id).
Paroolipoliitika
Parool on kohustuslik abonendi loomisel. Reeglid:
Vähemalt 8 märki
Vähemalt 1 suurtäht (A-Z)
Vähemalt 1 erimärk (!@#$%^&* jne)
Kehtib nii UI-le kui ka API-le. Uuendamisel on parool valikuline, kuid kui esitatud, peab vastama reeglitele.
Seadistused
Kihi automaatne ettevalmistamine ja turvalisus
Mahtuvuse + failisüsteemi automaatne tuvastamine: kui vaba NVMe valitakse rippmenüüst, loetakse mahtuvus (GB) lsblk -bn -o SIZE käsust.
Kihi loputusmehhanism — pidev peegeldamine
StorageTierFlush GenServer töötab iga 60 sekundi tagant. Selle asemel, et oodata tunni kataloogi 'vananemist' ja liigutada 5 GB puhanguna, tilgutab segmente RAID-ile pidevalt.
Miks pidev peegeldamine on parem kui 'oota 60 min, liiguta partiina': (1) RAID-i koormus on ühtlane; (2) enamik kuumadest andmetest on juba RAID-il; (3) kustutamine on faili kaupa kontrollitud.
Poolelioleva segmendi ohutus: peegeldamine valib ainult failid, mis on vanemad kui MIRROR_MIN_AGE_MINUTES (find -mmin +5).
Paigalduse kohane häälestus (.env)
500–1000
Suuruse reegel:
DVR eelvaate kalender
DVR eelvaate vahekaart näitab serveris renderdatud kalendrit, mis toob esile ainult need päevad, millel on kettale salvestisi.
Salvestistega päevad on klõpsatavad (sinine) — klõpsamine täidab kuupäeva sisestusvälja selle päevaga 00:00; kasutaja valib seejärel tunni.
Rakendatud failis Stream.available_dvr_days/1 via find -mindepth 4 -maxdepth 4 -type d igal kihi ühenduspunktil.
Ülevaade
B2C (Business-to-Consumer) API pakub lõppkasutajate mängijarakendustele autentimist ja voojuurdepääsu. Kasutajad autentivad end kasutajanime/parooliga ja saavad järgnevate päringute jaoks tähtajalise autentimisloa.
Autentida kasutajat ja hankige auth_token järgnevaid API kutse jaoks.
Meetod
Lõpp-punkt
Taotluse keha
Parameeter
Tüüp
Nõutav
Kirjeldus
Jah
Kasutaja sisselogimise nimi
Kasutaja parool
Näidis taotlus
Vastuse väljad
Eduka vastus (200)
Krüpteeritud autentimise märgis järgnevatele API kutsele
Märgise aegumise kuupäev/kellaaeg ISO 8601 formaadis
Näidis edukuse vastus
Vastus viga (403)
Vea kirjelduse sõnum
HTTP olekukood
Vea vastuse näide
Hangige teavet autenditud kasutaja kohta auth token kasutades.
Vastuse väljad
Autenditud kasutaja kasutajanimi
Serveri sõnum (tühi kui pole)
Autentimise olek (1 = autenditud)
Konto olek: Aktiivne, keelatud, keelatud, Katse
Konto aegumiskuupäev (null, kui see on piiramatu)
Praeguste aktiivsete ühenduste arv
Konto loomise kuupäev ISO 8601 formaadis
Maksimaalne lubatud samaaegsete ühenduste arv
Lubatud väljundvoovormingute loend
Kasutaja omaniku/edasimüüja pakkuja nimi (null kui pole)
Pakkuja logo pildi URL (null kui pole)
Pakkuja ahendamise logo kujutise URL 208 x 208 (null, kui seda pole)
Praegune serveriaeg ISO 8601 formaadis
Näidis taotlus
Hangige kategooriaid filtreeritud tüübi järgi. Saadaolevad tüübid: live (vooge), vod (filmid), seeria.
Kategooria tüüp: otse-, vod või sari
Kategooria ID stringina
Kategooria kuvanimetus
Emakaategooriae ID (0 kui juur)
MD5 sisu räsi vahemälu kehtetuks tunnistamiseks
Näidis taotlus
Hangige üksikasjalik teave konkreetse VOD üksuse kohta, sealhulgas metaandmed ja voodu lingid.
VOD voo ID (UUID)
Kaanepildi URL
TMDB identifikaator
Taustadekoratsiooni pildi URL
Žanri string
Süžee / kirjeldus
Osanäitlejad
Hindamisväärtus (0–10)
Direktori nimi
Väljalaske kuupäev
Kestus sekundites
Kestus vormindatud stringina
Kategooria ID-de massiiv
1 kui täiskasvanud sisu, 0 muidu
VOD voo ID
VOD pealkiri
Lisatud kuupäev (ISO 8601)
Voo lingi URL
Video/heli kodeki metaandmed
Hangige seeria teave täielike hooaja ja episoodide nimekirjadega, mis on koondatud hooaja numbri järgi.
Seeria ID (UUID)
Hooaja number
Hooaja kuvanimi
Hooaja episoodide arv
Hooaja eetrikuupäev
Hooaja ülevaade / kirjeldus
Hooaja kaanepildi URL
Kaart hooaja numbri stringiga. Iga väärtus on episoodi objektide massiiv.
Episoodi objektiväljad
Episoodi ID
TMDB episoodi ID
Episoodi number hooaja sees
Lisamise kuupäev (ISO 8601)
Hooaja number
Episoodi infobjekt (sama struktuur kui VOD info)
Voo lingi URL
Video/heli kodeki metaandmed
Tokeni aegumine sõltub kasutaja rollist: admin = 365 päeva, muu = 30 päeva|Keelatud kontod ei saa autentida (tagastab 403)|Iga edukas sisselogimine värskendab kasutaja viimase sisselogimise ajatemplit|Tokenid on krüptitud ja sisaldavad kasutajatunnust, kasutajanime, rolli ja aegumist
Edukas vastus (200)
Auth token saadi /auth lõpp-punktist