Come funziona Facebook

Facebook è un meraviglioso esempio dell'effetto rete, in cui il valore di una rete per un utente è esponenzialmente proporzionale al numero di altri utenti che la rete ha.





Il potere di Facebook deriva da ciò che Jeff Rothschild, il suo vicepresidente della tecnologia, chiama il grafico sociale, la somma delle connessioni estremamente varie tra gli utenti del sito e i loro amici; tra persone ed eventi; tra eventi e foto; tra foto e persone; e tra un numero enorme di oggetti discreti collegati da metadati che li descrivono e le loro connessioni.

Il business dei social network

Questa storia faceva parte del nostro numero di luglio 2008

  • Vedi il resto del problema
  • sottoscrivi

Facebook gestisce data center a Santa Clara, in California; San Francisco; e Virginia del Nord. I centri sono costruiti sul retro di tre livelli di server x86 caricati con software open source, alcuni dei quali creati da Facebook.



Diamo un'occhiata alla struttura principale, a Santa Clara, e poi mostriamo come interagisce con i suoi fratelli.

Il livello più alto della rete Facebook è costituito dai server Web che creano le pagine Web visualizzate dagli utenti, la maggior parte con otto core che eseguono Linux e Apache a 64 bit. Molte delle pagine e delle funzionalità del social network sono create utilizzando PHP, un linguaggio di scripting per computer specializzato per funzioni semplici e automatizzate. Ma Facebook sviluppa anche complesse applicazioni di base utilizzando una varietà di linguaggi per computer completi, tra cui C++, Java, Python e Ruby. Per gestire la complessità di questo approccio, l'azienda ha creato Thrift, un framework applicativo che consente a programmi compilati da linguaggi diversi di lavorare insieme.

Il livello inferiore è costituito da server Linux a otto core che eseguono MySQL, un'applicazione server di database open source. Rothschild stima che Facebook abbia circa 800 di questi server che distribuiscono circa 40 terabyte di dati utente. Questo livello archivia tutti i metadati su ogni oggetto nel database, ad esempio una persona, una foto o un evento.



Il livello intermedio consiste nella memorizzazione nella cache dei server. Nemmeno 800 server di database possono fornire tutti i dati necessari: Facebook riceve 15 milioni di richieste al secondo sia per i dati che per le connessioni. I server cache di massa, che eseguono Linux e il software open source Memcache, colmano il divario. Circa il 95% delle query di dati può essere riempito dai 15 terabyte di RAM dei server cache, in modo che solo 500.000 query al secondo debbano essere passate ai database MySQL e ai loro dischi rigidi relativamente lenti.

Foto, video e altri oggetti che popolano il livello Web sono archiviati in filer separati all'interno del data center.

La struttura di San Francisco replica i livelli Web e cache, nonché i filer con gli oggetti del database, ma utilizza il livello del database MySQL di Santa Clara.



Il data center della Virginia è troppo lontano per condividere i database MySQL: con 70 millisecondi di ritardo Internet, più o meno, semplicemente non funzionerà. Pertanto, duplica completamente la struttura di Santa Clara, utilizzando la replica MySQL per mantenere sincronizzati i livelli del database.

Qual è il futuro della tecnologia di Facebook? Per prima cosa, afferma Rothschild, l'azienda ha scoperto che gli interrupt sui controller Ethernet dei server, che consentono ai server di elaborare una miriade di richieste che arrivano contemporaneamente, sono un collo di bottiglia, dal momento che sono generalmente gestiti da un solo core. Quindi Facebook ha riscritto i driver dei controller per scalare su sistemi multicore. Facebook sta anche sperimentando unità a stato solido, che potrebbero accelerare le prestazioni del livello del database MySQL di un fattore 100.

Dato che Facebook sta crescendo e che le connessioni crescono in modo esponenziale, il sito avrà presto bisogno di quelle prestazioni.



nascondere