Örök téma: centralizált vagy elosztott streaming
A Netflix talán legjobban várt idei megjelenésén vagyunk túl: kijött a Stranger Things ötödik évadának utolsó epizódja is. Mint hasonló esetekben, ez is megizzasztotta a szervereket, a felhasználók pedig lassulásról, akadozásról számoltak be. Még ha nem is globálisan, de a probléma várható és előre borítékolható volt.
Mi az oka, hogy akár a Netflixen, akár más streaming platformon egy-egy nagy cím esetén akadozással lehet számolni?
Természetesen a nézők hirtelen, ugrásszerű növekedése az oka, a hirtelen, nagy mennyiségű látogató, főleg olyan erőforrásigényes tartalomnál, mint a filmek, megizzasztják a szervereket. A szerverek kapacitása pedig véges, még egy olyan nagyágyú esetén is, mint a Netflix.

A videostreaming alapjai
Nem, nem fogok részletekbe bocsátkozni, csak a megértést akarom elérni. Igazából ahhoz, hogy a videót eljuttassuk a nézőhöz, két megoldás létezik, ebből pedig a második ami számunkra érdekes, bár ez is alapvetően kétfelé oszlik (vagy még több felé, de ez most nem érdekes).
Ha én videót akarok neked mutatni, két dolgot tehetek:
- feltöltöm valahova, te pedig letöltöd. Az egész videót, tart ameddig tart. De internetes le-feltöltés helyett lehetne cédékre, DVD-kre, USB-s tárolókra is másolni, a lényeg, hogy egyszerre adom oda a teljes filmet.
- streamelem, azaz nem egyszerre juttatom el a manapság több tíz gigabájtos videót, hanem szeletekre bontva, és amíg te nézed a már megkapott szeleteket, én továbbítom feléd a soron következőket. Leegyszerűsítve. Merthogy ez azért annál bonyolultabb, de most és itt ennyi bőven elég.
A stream ma nagyon népszerű: ha megnézek egy Youtube videót, az bizony streamelés. Ha Disney+, Netflix, HBO, az mind streamelés. Sőt, igazából a technológiai alapjait tekintve a hagyományos tévécsatornák digitális sugárzása is streamelés, de más okokból hétköznapi értelemben nem soroljuk ide.
Tehát a klasszikus, feltöltöm-letöltöm a videót, az nem streamelés. A videót egyszer megkapod, de ha útközben megszakad a kapcsolat, akkor lehet elölről kezdeni. Hát ez nem valami stabil, ugye?
Ha streamelem, akkor (a technikai hátterében) a videót felszeletelem valamilyen szisztéma mentén valamennyi darabra, a néző pedig elkezdi egyesével, vagy esetleg párhuzamosan egyszerre 2-3 darabonként letölteni a darabkákat. Ez is voltaképp letöltés, de egy-egy darabka a filmből nem a teljes film, önmagában nem elégséges. Ahhoz viszont igen, hogy néhány darabka megléte esetén el lehessen kezdeni a nézést. Ha a darabok nézése tovább tart, mint a darabok átküldése, a nézés folyamatos lesz, hiszen, míg nézek egy szeletet a filmből, egy vagy több szelet érkezik, amiket majd sorban megnézek. Ez megy addig, míg tart a film. Így működik a Netflix is.
Mi a probléma a videostreameléssel?
Alapvetően semmi, mivel zseniális dolog, és látjuk, nagyon jól működik. A probléma akkor van, ha a film, vagy annak darabkái elérhetetlenek, vagy az elérhetőségük lassul, elakad. Ez vagy a hálózati (pl. internet) túlterheltsége, vagy a filmet biztosító szolgáltatás véges kapacitásai miatt történhet. És itt bontjuk megint ketté a lehetséges forgatókönyvet.
Honnan származhat a film streamelés alatt? Hogyan érthető el?
- centralizáltan: például egy (vagy több) szerverről
- elosztottan: például a szerver(ek) helyett vagy mellett például a filmet néző többi felhasználó gépéről, ezt P2P (peer-to-peer) néven illetik
- (van más egyéb is, de a téma szempontjából csak a fenti kettő érdekes most)
A centralizált streamelés
Igazából így működnek a nagyok, mind a Youtube, mind pedig a Disney+, Netflix, Amazon Prime, és még sorolhatnánk. De ide tartoznak a zenestreaming szolgáltatások is, pl. a Spotify, Apple Music vagy a Deezer.
Legegyszerűbben úgy kell elképzelni, hogy a médiatartalom a szolgáltató szervereiről érkeznek. A nagyoknak sok, nagyteljesítményű szervereik vannak, így többnyire nem kell fennakadással számolni. Többnyire. A szerverek kapacitása azonban véges és mivel minden központosított, a központ kiesése vagy lassulása esetén máris film vagy zene nélkül maradhatunk. Ha nincs szerver, nincs médiafogyasztás sem.

Az elosztott streamelés
Ebben az esetben nem, vagy nem csak a szerver(ek) biztosítják a film szeletkéit, hanem a hálózaton megtalálható egyéb csomópontok is. Ez például a P2P esetén maguk a kliensek, tehát egy film esetén a filmet néző felhasználók és számítógépeik. Picit vissza is kanyarodhatunk a poszt elején említett szeletekre bontás témájához, mert most jön igazán jól ez a megoldás. Tegyük fel, hogy a filmet, amit meg akarok nézni, egy szerver streameli. Elkezdem megkapni az első néhány szeletet, majd jön a többi is. Na de mi van, ha mondjuk valaki más már a film vége felé jár és sokkal több szelet van a birtokában, mint nekem? Kézenfekvő, hogy a szerver helyett (mellett) onnan is megkaphassam a szeleteket, ugye? Ez az elosztott (vagy disztributív) streamelés lényege. Nem, vagy nem kizárólag a szervertől kapom a szeleteket, hanem olyan kliensektől is, akik már rendelkeznek azon szeletekkel, amikkel én nem. És ezen túlmenve, én a saját szeleteimet is elérhetővé teszem olyanok számára, akik azokkal nem rendelkeznek még, amikkel én viszont igen.

Centralizált vagy elosztott?
Jó, de akkor mi a különbség a kettő között? Melyik a jobb? Röviden: nincs olyan, hogy jobb vagy rosszabb, hisz ez helyzet függvénye.
A centralizáció egyértelmű előnye épp a hátránya is: minden egy helyen van, egyszerűbben menedzselhető. Viszont a központ kiesése mindenki számára elérhetetlenné teszi a tartalmat. És majdnem ugyanez, ha a központ túlterhelődik (hiszen a kapacitások végesek): ilyenkor jön a klasszikus Netflix akadozás. Szerencsére a nagyok nagy szerverkapacitásokkal rendelkeznek, ezért ez eléggé ritka eset.
Az elosztott rendszer előnye az, hogy itt a szerver helyett vagy mellett bekapcsolódnak a terjesztésbe a kliensek is. Nem úgy, mint a szerver, hisz nincs meg mindenkinél minden, de egy pókhálószerű szövevényes hálózatban egy csomópont akár más csomópontok ezreivel is kapcsolatban állhat. Egy csomópont akár az összes szeletet különböző más csomópontoktól is beszerezheti. Ellenben ennek a rendszernek a menedzselése bonyolultabb, hisz az esetenként sok száz, akár sok ezer csomópontot valahogy irányítani, naplózni kell.
Amíg a tartalmat elérő kliensek száma kevés (de legalábbis a szerver kapacitásait nem haladja meg), igazából nincs különbség. Ellenben ha több a kliens, mint a szerverkapacitás, az elosztott hálózat rögtön stabilabb és gyorsabb lesz, sőt: minél több ilyen kliens van, annál több helyről lehet megszerezni a darabkákat. Ez a klasszikus szerver-kliens megoldás teljes ellentéte.
A centralizált terjesztés nagy előnye tehát, hogy egy helyen van minden, nagyobb kontroll, kisebb szervezési feladatok vannak, de véges erőforrások. Az elosztott rendszerben annál nagyobb a rendszer kapacitása, minél többen vesznek részt az adatcserében, de kisebb a kontroll lehetősége a rendszer felett és nagyobb munka hárul a szervezésre.
P2P
A peer-to-peer adatcsere nem újkeletű: a 2000-es évek elején nagy népszerűségnek örvendő Kazaa az egyike volt a P2P úttörőinek: generációk nőttek fel a Kazaa-n keresztül terjesztett filmek és zenék egymás közti megosztásával. A P2P-re épít az illegális tartalommegosztás szinonímájaként emlegetett torrent (BitTorrent) is, annak ellenére, hogy maga a torrent, mint protokoll (és nem mint szoftver vagy weboldal) egy zseniális dolog, és önmagában nem is illegális. A rajta illegálisan megosztott tartalom miatt lett hírhedt annak ellenére, hogy sokszor Linux lemezképeket is terjesztenek torrent segítségével.
Sőt, 2014-ig a népszerű zenestreaming szolgáltató, a Spotify is P2P-alapokon biztosította a zenék folyamatos elérhetőségét, továbbá a videohívásairól ismertté vált, mára már megszüntetett Skype is P2P alapokon biztosította a stabil videóhívást, még a Microsoft általi felvásárlás előtt.
De akkor miért nem lehet a Netflixen így filmeket nézni, ha ennyire jó? A nagyágyúk, mint a Netflix is, üzleti megfontolásokat előbbre vesz, mint társadalmi érdekeket. Jellemző ezen szolgáltatókra, hogy a nagyobb kontrollt előbbre tartják, mint a stabilitást, és inkább erővel próbálnak győzni: inkább nagyobb szerverkapacitást állítanak csatarendben, semmint a klienseket is bevonnák a filmek terjesztésébe.
Vajon a P2P által sérülne a filmek védelme? Legfeljebb csak nüansznyit, vagy még annyit se. A filmek, zenék darabkái erősen titkosítottak, önállóan nem nézhetők/hallgathatók és nem is adhatók tovább a terjesztésben részt vevő rendszer elemei nélkül (a titkosítás kötve van a klienshez), így hiába venne részt a kliens a terjesztésben, a médiaformátum másra úgysem használható.
Pedig a P2P segítségével, főleg nagy nézettségeknél, rugalmasabb moziélményt kaphatnának a nézők. Így nem igazán fordulhatna elő, hogy túl sok nézőt vonzó alkotások esetén a hirtelen nagy mennyiségű néző miatt belassul, elakad vagy leáll a rendszer, mint ami történt a Netflix-szel a Stranger Things utolsó epizódjának megjelenésekor.
A P2P egy alapvetően rettentően jól összerakott dolog: stabil, robosztus, független mindentől (mindegy, mit terjesztünk és honnan), a profitorientált nagyvállalatok mégis a centralizált, teljes kontrollt biztosító saját megoldásaikat fogják előnyben részesíteni a bevételük maximalizálása, a kontrolljuk megőrzése és a befektetett erőforrásaik minimalizálása mellett. Az elosztott rendszer pedig megmarad olyan helyzetekre, amikor a bekerülési kapacitások kisebbek, az elérendő célok között pedig inkább szerepel a felhasználók elégedettsége, mint a rendszer feletti uralkodás igénye.