Qual è l'architettura di YouTube?
L'architettura di Youtube può essere abbastanza complicata ora che è già un sistema piuttosto grande. Penso che questo articolo abbia una panoramica abbastanza buona sull'architettura di Youtube.
Tuttavia, penso che molte persone siano curiose di sapere come sono state prese varie decisioni di design per Youtube. Per esempio, come memorizzare i video per un accesso veloce? Come progettare il suo database? Come scalare il sistema?
Vorrei parlare brevemente di alcuni di questi argomenti e potete controllare Come progettare Youtube I e Come progettare Youtube II per maggiori informazioni.
Storage e modello di dati
Se state usando un database relazionale come MySQL, progettare lo schema dei dati può essere semplice. E in realtà, Youtube usa MySQL come database principale fin dall'inizio e funziona abbastanza bene.
Prima di tutto, abbiamo bisogno di definire il modello dell'utente, che può essere memorizzato in una singola tabella che include email, nome, dati di registrazione, informazioni sul profilo e così via. Un altro approccio comune è quello di mantenere i dati dell'utente in due tabelle - una per le informazioni relative all'autenticazione come email, password, nome, data di registrazione, ecc. e l'altra per informazioni aggiuntive sul profilo come indirizzo, età e così via.
Il secondo modello principale è il video. Un video contiene molte informazioni tra cui i meta dati (titolo, descrizione, dimensione, ecc.), il file video, i commenti, il conteggio delle visualizzazioni, il conteggio dei like e così via. Apparentemente, le informazioni video di base dovrebbero essere tenute in tabelle separate in modo da poter avere prima una tabella video.
La relazione autore-video sarà un'altra tabella per mappare l'id utente all'id del video. E la relazione utente-video può anche essere una tabella separata. L'idea qui è la normalizzazione del database - organizzare le colonne e le tabelle per ridurre la ridondanza dei dati e migliorare l'integrità dei dati.
Stoccaggio di video e immagini
Uno degli approcci più comuni è quello di utilizzare CDN (Content delivery network). In breve, la CDN è una rete distribuita a livello globale di server proxy distribuiti in più centri dati. L'obiettivo di una CDN è quello di servire contenuti agli utenti finali con alta disponibilità e alte prestazioni. È una sorta di rete di terze parti e molte aziende stanno memorizzando file statici su CDN oggi.
Il più grande vantaggio utilizzando CDN è che CDN replica il contenuto in più luoghi in modo che ci sia una migliore possibilità che il contenuto sia più vicino all'utente, con meno salti, e il contenuto verrà eseguito su una rete più amichevole. Inoltre, CND si prende cura di problemi come la scalabilità e basta pagare per il servizio.
Video popolari VS video a coda lunga
Se avete pensato che CDN è la soluzione definitiva, allora vi sbagliate completamente. Dato il numero di video che Youtube ha oggi (819.417.600 ore di video), sarà estremamente costoso ospitarli tutti su CDN soprattutto la maggior parte dei video sono long-tailed, che sono video che hanno solo 1-20 visualizzazioni al giorno.
Tuttavia, una delle cose più interessanti di Internet è che di solito, sono quei contenuti long-tailed che attirano la maggioranza degli utenti. La ragione è semplice - quei contenuti popolari possono essere trovati ovunque e solo le cose a coda lunga rendono il prodotto speciale.
Tornando al problema dello stoccaggio. Un approccio diretto è quello di ospitare i video popolari in CDN e i video meno popolari sono memorizzati nei nostri server per località. Questo ha un paio di vantaggi:
- I video popolari sono visti da un numero enorme di pubblico in luoghi diversi, che è quello che CND è bravo a fare. Replica il contenuto in più luoghi in modo che sia più probabile servire il video da una rete vicina e amica.
- I video a coda lunga sono di solito consumati da un particolare gruppo di persone e se si può prevedere in anticipo, è possibile memorizzare quei contenuti in modo efficiente.
Articoli simili
- Cos'è m.YouTube? Quando ero su YouTube sul mio portatile, è cambiato in m.YouTube e quando digito www.YouTube.com cambia in m.YouTube.
- Qual è l'architettura di Kubernetes?
- Qual è la differenza tra l'architettura ARM e il RISC regolare?
- Qual è il modo migliore per imparare l'architettura del braccio? Come posso capire le basi di qualsiasi processore e braccio?