Indholdsfortegnelse[Skjule][At vise]
Der er en ret anstændig mulighed for, at du har streamet noget, hvis du har brugt noget tid online.
Streaming er en af de mest almindelige anvendelser for internettets mest kendte apps, uanset om det er via YouTube, Spotify, Netflix eller hundrede andre.
Men i betragtning af hvor almindelig streaming er, er det nemt at tage det for givet. For eksempel: Hvad er streaming præcist?
Alt mediemateriale, uanset om det er live eller optaget, der sendes over internettet til computere og mobile enheder og afspilles i realtid, kaldes streaming.
Almindelige typer streamingmateriale omfatter podcasts, webcasts, film, tv-shows og musikvideoer.
Medieelementer som musik, video og andre typer planlægges og overføres i fortløbende datapakker, så de kan streames med det samme.
En passende enhed, adgang til en streamingtjeneste eller app og en hurtig, pålidelig højhastighedsinternetforbindelse er alt, hvad du behøver for at streame.
Bemærk: Vi bruger en videostreamingtjeneste som vores eksempel.
Dette indlæg vil tage et dybt kig på streamingtjenestens systemdesign og nøglefaktorer, der skal tages i betragtning under udvikling af videostreamingapplikationer.
System Krav
Blandt de mest populære videostreamingtjenester i verden er YouTube og Netflix. For at forbedre brugeroplevelsen indeholder deres arkitektur en række elementer.
En sådan service inkluderer populære film, fakturering, AI-baserede anbefalingssystemer og se senere funktionalitet, men vi vil koncentrere os om de væsentlige elementer.
Kernekvaliteter
Vi har inkluderet følgende muligheder i vores koncept for en video-streaming service:
- Skabere af indhold kan sende videoer.
- Seere kan bruge mange enheder til at se videoer (mobil, tv osv.).
- På videoer kan brugere kommentere, like eller dislike.
- Titlerne på videoer kan bruges til at søge efter dem.
- For at vise disse statistikker til brugere kan systemet gemme visninger, likes og dislikes.
Systemmål
- Der bør ikke være nogen buffering, så seerne kan se videoer i realtid.
- Opbevaring til video skal være pålidelig. Du bør ikke miste de videoer, du har uploadet.
- Med en stigning i brugere, burde systemet være skalerbart.
- Lav latenstid og høj tilgængelighed bør være funktioner i systemet. I denne situation er konsistens ikke så vigtig, fordi det er okay for en bruger at vente noget tid, før han ser en ny indsendt film.
En enkelt server kan ikke håndtere mængden af data, da systemet skal håndtere stærk trafik på en regelmæssig basis. En gruppe af servere vil blive brugt til at servicere systemet.
Der bør ikke være nogen mærkbar hastighedspåvirkning for klienter, selvom en server går ned.
Arkitektur på højt niveau
Et videostreamingprogram kan acceptere en af tre forskellige slags anmodninger:
- Upload (skriv)
- Søg (læs)
- Se (læs)
Da læseforespørgsler (søgning og visning) ofte vil være flere gange hyppigere end skriveanmodninger (upload), håndteres hver af dem af en separat klynge af servere.
Fordi programmet er læseintensivt, bliver du nødt til at konfigurere flere servere til at håndtere læseanmodninger end uploads.
Hver anmodning foretaget af en klient dirigeres til den korrekte mikroservice af belastningsbalancer når den modtages.
Upload service
Uploadtjenesten, som behandler videoen, uploader den til Open Connect-servere og gør den tilgængelig for alle brugere, opfylder en uploadanmodning.
Søgetjeneste
Loadbalanceren sender søgeanmodningen til søgemikrotjenesten, som derefter sender den til Netflix' Elastic-søgning. Klienten modtager Elastic-søgningens svar.
Elastisk søgning, en utrolig skalerbar fuldtekst open source søgemaskine, bruges af Netflix til at søge gennem millioner af videoer.
Elastisk søgning bruges af Netflix til at analysere kundeservicedrift.
Se service
Størstedelen af visningsanmodninger vil ikke blive sendt til load balanceren eller Netflix's servere. I stedet vil brugerne oprette forbindelse til lokale internetudbydere og blive fodret direkte fra den nærmeste Open Connect-server.
Men hvis den anmodede video ikke er tilgængelig, vil den blive sendt til belastningsbalanceren og visningsmikrotjenesten.
Videoen søges derefter i metadatadatabasen, hentes fra stien angivet i metadataene og sendes til klienten.
Selvfølgelig inkluderer denne teknik latency, hvorfor praktisk talt alle visningsanmodninger leveres via Open Connect.
Upload videoer
YouTubes hovedformål er at uploade en film eller video. En videostreamingtjeneste skal overvinde en række forhindringer, før den gør en video tilgængelig for sine forbrugere.
Opbevaring i stykker
Hver indsendt video vil blive opdelt i adskillige mindre filer i stedet for at blive opbevaret som en enkelt stor fil.
Dette er vigtigt, da indholdsproducenter er i stand til at indsende enorme videoer. En enkelt stor fil kan tage et stykke tid at behandle eller streame.
Seeren behøver ikke at downloade hele videoen for at afspille den, hvis den er gemt og gjort tilgængelig for dem i stykker.
For at sikre, at der er lidt latenstid mellem chunks, og at brugeren har en jævn visningsoplevelse, vil klienten først anmode om den første chunk fra serveren og derefter anmode om den følgende chunk, mens den chunk afspilles.
Behandler kø
Hver video har adskillige bidder, og Netflix vil bruge flere samtidige arbejdere til at analysere dem, så der kræves en behandlingskø. Ved at tilføje dem til køen gøres dette nemmere.
Jobbene vil blive indsamlet af arbejderne (eller indkodere, som vi vil dække herefter), kodet til forskellige formater og derefter gemt i det distribuerede fillager.
Video Encoding
Det er afgørende at konvertere og gemme videoklumperne i flere formater, så seerne kan få adgang til dem ved hjælp af den teknologi og internetforbindelse, der fungerer bedst for dem.
Videoen kan ses på en bærbar computer, telefon, tv eller andre gadgets af seerne. De optimale formater for forskellige enheder adskiller sig fra hinanden.
På samme måde kunne forskellige seere bruge forskellige båndbredder til at få adgang til internettet.
Nogle seere kunne nemt streame film i høj opløsning afhængigt af hastigheden på deres internetforbindelse eller båndbredde, mens de med en mindre båndbredde vil være i stand til at streame lavkvalitetsvideoer meget lettere.
Åbn Connect
Når du bruger din browser til at anmode om Netflix.com, bliver din ISP (Internet Service Provider) virkelig bedt om at etablere en forbindelse mellem din computer og Netflix-serveren.
Din internetudbyder kontakter Netflix IP-adressen på dine vegne og returnerer resultatet til dig. Publikum i en fjern nation som Tokyo vil opleve betydelige forsinkelser i transmission og modtagelse af signaler på grund af koncentrationen af disse servere i USA.
Med videoer er forsinkelser meget mere et problem, da en masse data skal overføres til seeren, og hvis det er tilfældet, vil streamingen blive forsinket, og brugeroplevelsen lider.
Netflix bruger en smart teknik til at løse problemet. Det er kendt som Open Connect (OC). Open Connect er det CDN, som Netflix bruger (Content Delivery Network).
For at cache online information og levere den hurtigt til forbrugerne ved at reducere den fysiske afstand mellem brugeren og materialet, er CDN et netværk af spredte servere og tilhørende datacentre.
Load Balancing
A enkelt ansøgning serveren er ikke i stand til at håndtere mængden af anmodninger (inklusive upload, søgning og visningsanmodninger), der ankommer hvert sekund.
Der skal være en load balancer på plads for effektivt at fordele arbejdsbyrden på tværs af de mange servere, da der er flere servere involveret.
Netflix anvender konstant hashing til at fordele belastninger mellem servere, fordi det kan håndtere serverfejl og imødekomme installationen af yderligere servere med lethed.
Da populariteten af hver video varierer, kan de faktiske servere, der hoster disse film, opleve en ulige belastning. Ved at bruge dynamiske HTTP-omdirigeringer, som tillader en travl server at omdirigere en ny anmodning til en åben server, kan vi løse dette problem.
Overvejelser ved udvikling af en videostreamingapplikation
Find og udvikle din niche
Med så mange forskellige slags materiale tilgængeligt, fra underholdning til uddannelse til fitness, er det afgørende at opbygge en differentiator med et specialiseret speciale. Du kan skabe en platform for dokumentarfilm eller uafhængige film.
Applikationens indtægtsgenerering
At forstyrre traditionelle indtægtsmønstre kan resultere i innovation og vækst. Planer skal altid være skræddersyet til målgruppen.
Fordi de etablerede virksomheder allerede har monopoliseret markedet, kan du prøve at tjene penge på gratis medlemskaber med annoncer eller produktplacering.
Sammen med dette, hvis du ønsker at konstruere en global streamingtjenesteplatform, skal du overveje behovene i flere valutaer.
Bedre oplevelse
Ydeevnen af programmet bør forbedres til randomstændigheder som langsomt internet eller brugere med begrænset adgang.
Streaming af videoer
Ikke kun udsender Netflix indhold, men det bruger også brugerteknologiske teknikker og personlige forslag til at holde brugerne tilsluttet tjenesten.
Planlæg at etablere en streamingtjeneste svarende til Netflix med vægt på dataanalyse og brugertilpasning.
Håndtering af appens mange roller
I Netflix-appen er brugervisning blot en af flere brugerroller. Planlægning er påkrævet for en række brugere og deres adgang, herunder administratoren, videoejeren, partnere, moderatorer osv.
Konklusion
Afslutningsvis er det sådan, hvordan videostreamingtjenester som Netflix, YouTube og andre videoer ombord holder styr på dem og viser dem til millioner af forbrugere.
Selvom hver af disse applikationer kan have et par ekstra funktioner, der adskiller dem, er den grundlæggende funktionalitet baseret på de samme algoritmer.
Jeg gjorde mit bedste for at give dig et generelt overblik over streamingtjenestens systemarkitektur, men der sker meget mere i baggrunden.
Jeg håber virkelig, at du vil finde denne viden værdifuld og gøre brug af den.
Giv en kommentar