Come la tecnologia della rete sociale gestisce una ragnatela di connessioni in continua proliferazione.
di Alan Zeichick
Facebook è un ottimo esempio delle ricadute positive di una rete, il cui valore per un utente è esponenzialmente proporzionale al numero di altri utenti che ha la rete.
La forza di Facebook deriva da ciò che Jeff Rothschild, che ne è vicepresidente per la tecnologia, definisce “diagramma sociale”, vale a dire la catena di tutte le connessioni tra gli utenti del sito e i loro amici; tra le persone e gli eventi; tra gli eventi e le foto; tra le foto e le persone e tra un numero considerevole di oggetti distinti collegati da metadati che li descrivono insieme alle loro connessioni.
Facebook ha aperto centri dati a Santa Clara, in California, a San Francisco e nella Virginia del Nord. I centri si affidano essenzialmente a tre ordini di server �86 con software a sorgente aperto, in parte creato dalla stessa Facebook.
Guardiamo nel dettaglio il funzionamento della struttura principale, a Santa Clara, e le sue interazioni con gli altri centri.
Il livello più alto della rete di Facebook è rappresentato dai server Web, per la maggior parte a 8-core, con in dotazione Linux e Apache a 64 bit, che creano le pagine Web che gli utenti vedono. Molte pagine e caratteristiche della rete sociale sono realizzate con PHP, un linguaggio di scripting per computer, specializzato nello svolgimento di semplici funzioni automatiche. Ma Facebook sviluppa anche complesse applicazioni “core” utilizzando una varietà di potenti linguaggi per computer, tra cui C++, Java, Python e Ruby. Per la gestione di un meccanismo così complesso, l’azienda ha creato Thrift, un protocollo per la realizzazione di applicazioni che permette a programmi compilati con linguaggi differenti di lavorare insieme.
Il livello inferiore consiste di server Linux a 8-core con MySQL, uno dei più importanti sistemi di gestione di banche dati sulla scena open source. Secondo i calcoli di Rothschild, Facebook ne possiede circa 800 che distribuiscono intorno ai 40 terabyte di dati utente. A questo livello si memorizzano tutti i metadati relativi a ogni oggetto che compare nella banca dati, senza distinzione tra persona, foto o evento.
Il livello intermedio è costituito da server con memoria cache. 800 server di banche dati non sono sufficienti a garantire tutte le informazioni necessarie; Facebook riceve 15 milioni di richieste al secondo per dati e connessioni. Altri server cache ammassati alla rinfusa, con in dotazione Linux e il software a sorgente aperto Memcache, riempiono il vuoto. Circa il 95 per cento delle richieste di dati può essere soddisfatta dai 15 terabyte di RAM dei server con memoria cache, lasciando inevase solo 500.000 richieste al secondo che vengono passate alle banche dati con sistema MySQL e ai loro hard drive relativamente lenti.
Foto, video e altri oggetti che popolano il livello Web vengono archiviati in server file interni al centro dati.
Il centro di San Francisco replica a sua volta i livelli Web e cache, nonchè i server file con gli oggetti della banca dati, ma utilizza il livello di banca dati MySQL di Santa Clara.
Il centro dati della Virginia è troppo distante per condividere i database MySQL: i 70 millisecondi di ritardo, in entrata o in uscita, di Internet non consentono questo tipo di operazione. Pertanto, la struttura ripropone integralmente il centro di Santa Clara e sfrutta una copia del sistema MySQL per mantenere sincronizzati i diversi livelli di database.
Qual è il futuro della tecnologia di Facebook? L’azienda, dice Rothschild, ha scoperto che le interruzioni sui controllori Ethernet dei server – che permettono ai server di elaborare le miriadi di richieste che arrivano contemporaneamente – sono un collo di bottiglia, in quanto sono generalmente gestite da un solo sistema core. Pertanto Facebook ha riscritto i driver dei controllori per passare a sistemi multicore. Facebook sta anche sperimentando drive a stato solido, che potrebbero aumentare la rapidità delle prestazioni del livello del database MySQL fino a 100 volte.
Considerando che Facebook è in continua crescita – e che le connessioni aumentano esponenzialmente – il sito dovrà raggiungere velocemente questo obiettivo.