Sommario[Nascondere][Spettacolo]
C'è una possibilità abbastanza decente che tu abbia trasmesso qualcosa in streaming se hai trascorso del tempo online.
Lo streaming è uno degli usi più comuni per le app più famose di Internet, che si tratti di YouTube, Spotify, Netflix o centinaia di altre.
Tuttavia, considerando quanto sia comune lo streaming, è semplice darlo per scontato. Ad esempio: cos'è lo streaming, esattamente?
Qualsiasi materiale multimediale, dal vivo o registrato, inviato su Internet a computer e dispositivi mobili e riprodotto in tempo reale è denominato streaming.
I tipi comuni di materiale in streaming includono podcast, webcast, film, programmi televisivi e video musicali.
Gli elementi multimediali come musica, video e altri tipi vengono pianificati e trasferiti in pacchetti di dati consecutivi in modo che possano essere trasmessi in streaming all'istante.
Un dispositivo adatto, l'accesso a un servizio di streaming o a un'app e una connessione Internet ad alta velocità veloce e affidabile sono tutto ciò di cui hai bisogno per eseguire lo streaming.
Nota: utilizzeremo un servizio di streaming video come esempio.
Questo post analizzerà in modo approfondito la progettazione del sistema del servizio di streaming e i fattori chiave da tenere in considerazione durante lo sviluppo di applicazioni di streaming video.
Requisiti di sistema
Tra i servizi di streaming video più popolari al mondo ci sono YouTube e Netflix. Per migliorare l'esperienza dell'utente, la loro architettura include una serie di elementi.
Tale servizio include film popolari, fatturazione, sistemi di raccomandazione basati sull'intelligenza artificiale e funzionalità per guardare in seguito, ma ci concentreremo sugli elementi essenziali.
Qualità fondamentali
Abbiamo incluso le seguenti funzionalità nel nostro concetto di a video streaming servizio:
- I creatori di contenuti possono pubblicare video.
- Gli spettatori possono utilizzare molti dispositivi per guardare i video (cellulari, TV, ecc.).
- Sui video, gli utenti possono commentare, mettere mi piace o non mi piace.
- I titoli dei video possono essere utilizzati per cercarli.
- Per mostrare queste statistiche agli utenti, il sistema può memorizzare visualizzazioni, Mi piace e Non mi piace.
Obiettivi del sistema
- Non dovrebbe esserci alcun buffering in modo che gli spettatori possano guardare i video in tempo reale.
- L'archiviazione per i video dovrebbe essere affidabile. Non dovresti perdere i video che hai caricato.
- Con un aumento degli utenti, il sistema dovrebbe essere scalabile.
- La bassa latenza e l'elevata disponibilità dovrebbero essere caratteristiche del sistema. In questa situazione, la coerenza non è così importante perché è normale che un utente aspetti un po' di tempo prima di vedere un film appena inviato.
Un singolo server non può gestire il volume di dati poiché il sistema deve gestire regolarmente un traffico intenso. Un gruppo di server verrà utilizzato per la manutenzione del sistema.
Non dovrebbero esserci impatti evidenti sulla velocità per i client anche se un server si arresta in modo anomalo.
Architettura di alto livello
Un programma di streaming video può accettare uno dei tre diversi tipi di richieste:
- Carica (scrivi)
- Cerca (leggi)
- Visualizza (leggi)
Poiché le query di lettura (ricerca e visualizzazione) saranno spesso molte volte più frequenti delle richieste di scrittura (caricamento), ciascuna di esse viene gestita da un cluster separato di server.
Poiché il programma è ad alta intensità di lettura, sarà necessario configurare più server per gestire le richieste di lettura rispetto ai caricamenti.
Ogni richiesta effettuata da un client viene instradata al microservizio appropriato dal bilanciamento del carico quando viene ricevuto.
Servizio di caricamento
Il servizio di caricamento, che elabora il video, lo carica sui server Open Connect e lo rende accessibile a tutti gli utenti, soddisfa una richiesta di caricamento.
Servizio di ricerca
Il servizio di bilanciamento del carico invia la richiesta di ricerca al microservizio di ricerca, che quindi la invia alla ricerca elastica di Netflix. Il client riceve la risposta della ricerca elastica.
La ricerca elastica, un motore di ricerca open source full-text incredibilmente scalabile, viene utilizzata da Netflix per cercare milioni di video.
La ricerca elastica viene utilizzata da Netflix per analizzare le operazioni del servizio clienti.
Visualizza servizio
La maggior parte delle richieste di visualizzazione non verrà inviata al sistema di bilanciamento del carico o ai server di Netflix. Invece, gli utenti si collegheranno agli ISP locali e saranno alimentati direttamente dal server Open Connect più vicino.
Tuttavia, se il video richiesto non è accessibile, verrà inviato al servizio di bilanciamento del carico e al microservizio di visualizzazione.
Il video viene quindi cercato nel database dei metadati, recuperato dal percorso specificato nei metadati e trasmesso al client.
Naturalmente, questa tecnica include la latenza, motivo per cui praticamente tutte le richieste di visualizzazione vengono fornite tramite Open Connect.
Carica video
Lo scopo principale di YouTube è caricare un film o un video. Un servizio di streaming video deve superare una serie di ostacoli prima di rendere un video accessibile ai suoi consumatori.
Tenendo in pezzi
Ogni video inviato verrà suddiviso in numerosi file più piccoli anziché essere conservato come un unico file di grandi dimensioni.
Questo è essenziale poiché i produttori di contenuti sono in grado di inviare video di grandi dimensioni. Un singolo file di grandi dimensioni potrebbe richiedere del tempo per l'elaborazione o lo streaming.
Lo spettatore non dovrà scaricare il video completo per riprodurlo se viene salvato e reso disponibile a pezzi.
Per garantire che ci sia poca latenza tra i blocchi e che l'utente abbia un'esperienza di visualizzazione fluida, il client richiederà prima il primo blocco dal server e quindi richiederà il blocco successivo durante la riproduzione di quel blocco.
Coda di elaborazione
Ogni video ha numerosi blocchi e Netflix utilizzerà diversi lavoratori simultanei per analizzarli, quindi è necessaria una coda di elaborazione. Aggiungendoli alla coda, questo è più semplice.
I lavori verranno raccolti dai lavoratori (o codificatori, di cui parleremo in seguito), codificati in vari formati e quindi archiviati nell'archivio di file distribuito.
Codifica video
È fondamentale convertire e salvare i frammenti di video in diversi formati in modo che gli spettatori possano accedervi utilizzando la tecnologia e la connessione Internet che funzionano meglio per loro.
Il video può essere visto su un laptop, telefono, TV o altri gadget dagli spettatori. I formati ottimali per i vari dispositivi differiscono l'uno dall'altro.
Allo stesso modo, vari spettatori potrebbero utilizzare varie larghezze di banda per accedere a Internet.
Alcuni spettatori potrebbero essere in grado di riprodurre in streaming film ad alta risoluzione con facilità a seconda della velocità della loro connessione Internet o della larghezza di banda, mentre quelli con una larghezza di banda inferiore saranno in grado di riprodurre in streaming video di bassa qualità molto più facilmente.
Apri Connetti
Quando usi il tuo browser per richiedere Netflix.com, al tuo ISP (Internet Service Provider) viene davvero chiesto di stabilire una connessione tra il tuo computer e il server Netflix.
Il tuo ISP contatta l'indirizzo IP di Netflix per tuo conto e ti restituisce il risultato. Il pubblico in una nazione remota come Tokyo subirà notevoli ritardi nella trasmissione e nella ricezione dei segnali a causa della concentrazione di questi server negli Stati Uniti.
Con i video, i ritardi sono molto più preoccupanti poiché molti dati devono essere trasmessi allo spettatore e, in tal caso, lo streaming verrà ritardato e l'esperienza dell'utente ne risentirà.
Netflix utilizza una tecnica intelligente per risolvere il problema. È noto come Open Connect (OC). Open Connect è la CDN utilizzata da Netflix (Content Delivery Network).
Al fine di memorizzare nella cache le informazioni online e consegnarle rapidamente ai consumatori riducendo la distanza fisica tra l'utente e il materiale, CDN è una rete di server diffusi e data center associati.
Bilancio del carico
A singola applicazione il server non è in grado di gestire il volume delle richieste (incluse le richieste di caricamento, ricerca e visualizzazione) che arrivano ogni secondo.
Deve essere presente un sistema di bilanciamento del carico per distribuire efficacemente il carico di lavoro tra i numerosi server poiché sono coinvolti diversi server.
Netflix utilizza l'hashing costante per distribuire i carichi tra i server perché può gestire i guasti dei server e ospitare facilmente l'installazione di server aggiuntivi.
Poiché la popolarità di ogni video varia, i server effettivi che ospitano questi film potrebbero subire un carico diverso. Utilizzando reindirizzamenti HTTP dinamici, che consentono a un server occupato di deviare una nuova richiesta a un server aperto, possiamo risolvere questo problema.
Considerazioni sullo sviluppo di un'applicazione di streaming video
Trova e sviluppa la tua nicchia
Con così tanti diversi tipi di materiale disponibili, dall'intrattenimento all'istruzione al fitness, è fondamentale costruire un elemento di differenziazione con una specialità specializzata. Puoi creare una piattaforma per documentari o film indipendenti.
La monetizzazione dell'applicazione
L'interruzione dei modelli di monetizzazione tradizionali può portare a innovazione e crescita. I piani dovrebbero sempre essere adattati al pubblico di destinazione.
Poiché gli operatori storici hanno già monopolizzato il mercato, puoi provare a monetizzare gli abbonamenti gratuiti con annunci o inserimenti di prodotti.
Insieme a questo, se vuoi costruire una piattaforma di servizi di streaming globale, devi considerare le esigenze multi-valuta.
Esperienza migliore
Le prestazioni del programma dovrebbero essere migliorate per circostanze marginali come Internet lento o utenti con accesso limitato.
Video in streaming
Non solo Netflix trasmette contenuti, ma utilizza anche tecniche di ingegneria degli utenti e suggerimenti personalizzati per mantenere gli utenti agganciati al servizio.
Pianifica di creare un servizio di streaming simile a Netflix con un'enfasi sull'analisi dei dati e sulla personalizzazione degli utenti.
Gestire i molteplici ruoli dell'App
Nell'app Netflix, la visualizzazione utente è semplicemente uno dei numerosi ruoli utente. La pianificazione è necessaria per una varietà di utenti e il loro accesso, inclusi l'amministratore, il proprietario del video, i partner, i moderatori, ecc.
Conclusione
In conclusione, è così che i servizi di streaming video come Netflix, YouTube e altri integrano i video, ne tengono traccia e li mostrano a milioni di consumatori.
Sebbene ciascuna di queste applicazioni possa avere alcune caratteristiche aggiuntive che le distinguono, la funzionalità fondamentale si basa sugli stessi algoritmi.
Ho fatto del mio meglio per darti una panoramica generale dell'architettura del sistema del servizio di streaming, ma c'è molto di più in background.
Spero sinceramente che troverai questa conoscenza preziosa e ne farai uso.
Lascia un Commento