Sadržaj[Sakrij][Prikaži]
Postoji prilično pristojna mogućnost da ste streamali nešto ako ste neko vrijeme proveli na mreži.
Streaming je jedna od najčešćih upotreba najpoznatijih internetskih aplikacija, bilo da se radi o YouTubeu, Spotifyju, Netflixu ili stotinama drugih.
Međutim, s obzirom na to koliko je streaming uobičajeno, jednostavno ga je uzeti zdravo za gotovo. Na primjer: Šta je zapravo streaming?
Svaki medijski materijal, uživo ili snimljen, koji se šalje preko interneta na računare i mobilne uređaje i reprodukuje u realnom vremenu, naziva se streaming.
Uobičajene vrste materijala za striming uključuju podcaste, webcastove, filmove, televizijske emisije i muzičke spotove.
Medijske stavke kao što su muzika, video i druge vrste planiraju se i prenose u uzastopnim paketima podataka tako da se mogu trenutno strimovati.
Odgovarajući uređaj, pristup servisu za striming ili aplikaciji i brza, pouzdana brza internetska veza su sve što vam je potrebno za striming.
Napomena: Koristit ćemo uslugu video streaminga kao naš primjer.
Ovaj post će detaljno razmotriti dizajn sistema streaming servisa i ključne faktore koje treba uzeti u obzir prilikom razvoja aplikacija za striming video zapisa.
Sistemski zahtev
Među najpopularnijim video streaming servisima na svijetu su YouTube i Netflix. Kako bi poboljšali korisničko iskustvo, njihova arhitektura uključuje niz elemenata.
Takva usluga uključuje popularne filmove, fakturisanje, sisteme preporuka zasnovane na veštačkoj inteligenciji i funkcionalnost za kasnije gledanje, ali mi ćemo se koncentrisati na bitne elemente.
Osnovni kvaliteti
Uključili smo sljedeće mogućnosti u naš koncept za a video streaming usluga:
- Kreatori sadržaja mogu objavljivati videozapise.
- Gledaoci mogu koristiti mnoge uređaje za gledanje videa (mobilni, TV, itd.).
- Na video snimcima, korisnici mogu primjetiti, sviđati se ili ne sviđati.
- Naslovi video zapisa mogu se koristiti za njihovo traženje.
- Da bi ove statistike prikazao korisnicima, sistem može pohraniti preglede, sviđanja i nesviđanja.
Ciljevi sistema
- Ne bi trebalo biti nikakvog međuspremnika kako bi gledaoci mogli gledati videozapise u realnom vremenu.
- Skladištenje za video treba biti pouzdano. Ne biste trebali izgubiti video zapise koje ste postavili.
- Sa povećanjem broja korisnika, sistem bi trebao biti skalabilan.
- Niska latencija i visoka dostupnost trebaju biti karakteristike sistema. U ovoj situaciji dosljednost nije toliko važna jer je u redu da korisnik sačeka neko vrijeme prije nego što pogleda svježe poslani film.
Jedan server ne može upravljati količinom podataka jer sistem mora redovno upravljati jakim prometom. Grupa servera će se koristiti za servisiranje sistema.
Ne bi trebalo biti vidljivih uticaja na brzinu za klijente čak i ako se jedan server sruši.
Arhitektura visokog nivoa
Program za video streaming može prihvatiti jednu od tri različite vrste zahtjeva:
- Učitaj (piši)
- Pretraži (pročitaj)
- Pogledaj (pročitaj)
Budući da će upiti za čitanje (pretraga i pregled) često biti nekoliko puta češći od zahtjeva za pisanje (upload), svaki od njih obrađuje poseban klaster servera.
Budući da je program intenzivan za čitanje, morat ćete postaviti više servera za obradu zahtjeva za čitanje nego za otpremanje.
Svaki zahtjev klijenta usmjerava se na odgovarajuću mikroservis od strane uravnoteživač opterećenja kada se primi.
Upload Service
Usluga upload-a, koja obrađuje video, postavlja ga na Open Connect servere i čini ga dostupnim svim korisnicima, ispunjava zahtjev za otpremanje.
Search Service
Balansator opterećenja šalje zahtjev za pretraživanje mikroservisu za pretraživanje, koji ga zatim šalje Netflixovoj Elastic pretrazi. Klijent prima odgovor na Elastic search.
Elastično pretraživanje, nevjerovatno skalabilni pretraživač otvorenog koda punog teksta, koristi Netflix za pretraživanje kroz milione videozapisa.
Netflix koristi elastičnu pretragu za analizu operacija korisničke službe.
Pregledajte uslugu
Većina zahtjeva za pregled neće biti poslana na balansator opterećenja ili Netflixove servere. Umjesto toga, korisnici će se povezivati na lokalne ISP-ove i biti napajani direktno sa najbližeg Open Connect servera.
Međutim, ako traženi video nije dostupan, on će biti poslan balanseru opterećenja i mikroservisu pregleda.
Video se zatim pretražuje u bazi metapodataka, preuzima sa putanje navedene u metapodacima i prenosi klijentu.
Naravno, ova tehnika uključuje kašnjenje, zbog čega se praktično svi zahtjevi za pregled pružaju putem Open Connect-a.
Otpremite videozapise
Glavna svrha YouTube-a je postavljanje filma ili videa. Usluga video streaminga mora prevladati brojne prepreke prije nego što video učini dostupnim svojim potrošačima.
Čuvanje u komadima
Svaki dostavljeni video će biti podijeljen u brojne manje datoteke umjesto da se čuva kao jedan veliki fajl.
Ovo je neophodno jer proizvođači sadržaja mogu slati ogromne video zapise. Obrada ili prijenos jedne velike datoteke može potrajati neko vrijeme.
Gledalac neće morati da preuzima kompletan video da bi ga pustio ako je sačuvan i stavljen na raspolaganje u delovima.
Kako bi se osiguralo da postoji malo kašnjenja između dijelova i da korisnik ima glatko iskustvo gledanja, klijent će prvo zatražiti prvi dio od servera, a zatim zatražiti sljedeći dio dok se taj dio reproducira.
Red za obradu
Svaki video ima brojne dijelove, a Netflix će koristiti nekoliko istovremenih radnika da ih analizira, tako da je potreban red za obradu. Dodavanjem u red čekanja ovo je pojednostavljeno.
Poslove će prikupljati radnici (ili enkoderi, o kojima ćemo dalje govoriti), kodirani u različite formate, a zatim pohranjeni u distribuiranu pohranu datoteka.
Kodiranje video zapisa
Ključno je pretvoriti i spremiti video dijelove u nekoliko formata kako bi im gledaoci mogli pristupiti koristeći tehnologiju i internet vezu koja im najbolje odgovara.
Gledaoci mogu da vide video na laptopu, telefonu, TV-u ili drugim uređajima. Optimalni formati za različite uređaje se razlikuju jedan od drugog.
Na sličan način, različiti gledaoci mogu koristiti različite propusnosti za pristup internetu.
Neki gledaoci mogli bi s lakoćom prenositi filmove visoke rezolucije, ovisno o brzini njihove internetske veze ili propusnosti, dok će oni sa manjim propusnim opsegom moći mnogo lakše emitovati video zapise niske kvalitete.
Otvorite Connect
Kada koristite svoj pretraživač da tražite Netflix.com, od vašeg ISP-a (Internet Service Provider) se zaista traži da uspostavi vezu između vašeg računara i Netflix servera.
Vaš ISP kontaktira Netflix IP adresu u vaše ime i vraća vam rezultat. Publika u udaljenoj zemlji poput Tokija doživjet će značajna kašnjenja u prijenosu i prijemu signala zbog koncentracije ovih servera u SAD-u.
Kod videa, kašnjenja su mnogo veća briga jer se gledaocu mora prenijeti mnogo podataka, a ako jeste, streaming će biti odgođen i korisničko iskustvo će patiti.
Netflix koristi pametnu tehniku da riješi problem. Poznato je kao Open Connect (OC). Open Connect je CDN koji Netflix koristi (Mreža za isporuku sadržaja).
Kako bi se keširale informacije na mreži i brzo ih dostavile potrošačima smanjenjem fizičke udaljenosti između korisnika i materijala, CDN je mreža proširenih servera i povezanih centara podataka.
Balansiranje opterećenja
A jedna aplikacija server nije u stanju podnijeti količinu zahtjeva (uključujući zahtjeve za otpremanje, pretraživanje i gledanje) koji stižu svake sekunde.
Mora postojati balanser opterećenja kako bi se radno opterećenje efikasno rasporedilo na brojne servere jer je uključeno nekoliko servera.
Netflix koristi konstantno heširanje za distribuciju opterećenja među serverima jer može podnijeti kvarove servera i s lakoćom prilagoditi instalaciju dodatnih servera.
Budući da je popularnost svakog videa različita, stvarni serveri koji ugošćuju ove filmove mogli bi doživjeti nejednako opterećenje. Koristeći dinamička HTTP preusmjeravanja, koja omogućavaju zauzetom serveru da skrene novi zahtjev na otvoreni server, možemo riješiti ovaj problem.
Razmatranja pri razvoju aplikacije za video streaming
Pronađite i razvijte svoju nišu
Sa toliko različitih vrsta materijala koji su na raspolaganju, od zabave preko obrazovanja do fitnesa, od ključne je važnosti za izgradnju diferencijatora sa specijaliziranom specijalnošću. Možete kreirati platformu za dokumentarne ili nezavisne filmove.
Monetizacija aplikacije
Narušavanje tradicionalnih obrazaca monetizacije može rezultirati inovacijama i rastom. Planovi bi uvijek trebali biti prilagođeni ciljnoj publici.
Budući da su vodeći ljudi već monopolizirali tržište, možete pokušati monetizirati besplatna članstva pomoću oglasa ili plasmana proizvoda.
Uz to, ako želite da izgradite globalnu platformu za streaming usluge, morate uzeti u obzir potrebe za više valuta.
Bolje iskustvo
Performanse programa treba poboljšati za krajnje situacije kao što su spor internet ili korisnici sa ograničenim pristupom.
Streaming videa
Netflix ne samo da emituje sadržaj, već koristi tehnike inžinjeringa korisnika i personalizirane prijedloge kako bi korisnike privukao na uslugu.
Planirajte uspostavljanje streaming servisa sličnog Netflixu s naglaskom na analitiku podataka i prilagođavanje korisnika.
Upravljanje mnogim ulogama aplikacije
U aplikaciji Netflix, korisnički prikaz je jednostavno jedna od nekoliko korisničkih uloga. Planiranje je potrebno za različite korisnike i njihov pristup, uključujući administratora, vlasnika videa, partnere, moderatore itd.
zaključak
U zaključku, ovo je način na koji servisi za striming video zapisa kao što su Netflix, YouTube i drugi ugrađeni video zapisi, prate ih i pokazuju ih milionima potrošača.
Iako svaka od ovih aplikacija može imati nekoliko dodatnih karakteristika koje ih izdvajaju, osnovna funkcionalnost se zasniva na istim algoritmima.
Dao sam sve od sebe da vam dam opšti pregled arhitekture sistema streaming servisa, ali u pozadini se dešava još mnogo toga.
Iskreno se nadam da će vam ovo znanje biti dragocjeno i da ćete ga iskoristiti.
Ostavite odgovor