Hur Facebook fungerar

Facebook är ett underbart exempel på nätverkseffekten, där värdet av ett nätverk för en användare är exponentiellt proportionellt mot antalet andra användare som nätverket har.





Facebooks makt härrör från vad Jeff Rothschild, dess vice vd för teknologi, kallar den sociala grafen – summan av de väldigt olika kopplingarna mellan webbplatsens användare och deras vänner; mellan människor och händelser; mellan händelser och foton; mellan bilder och människor; och mellan ett stort antal diskreta objekt länkade av metadata som beskriver dem och deras kopplingar.

Sociala nätverks verksamhet

Den här historien var en del av vårt julinummer 2008

  • Se resten av frågan
  • Prenumerera

Facebook har datacenter i Santa Clara, Kalifornien; San Francisco; och norra Virginia. Centern är byggda på baksidan av tre nivåer av x86-servrar laddade med öppen källkod, några som Facebook har skapat själv.



Låt oss titta på huvudanläggningen i Santa Clara och sedan visa hur den interagerar med sina syskon.

Toppskiktet i Facebook-nätverket består av webbservrarna som skapar webbsidorna som användarna ser, de flesta med åtta kärnor som kör 64-bitars Linux och Apache. Många av det sociala nätverkets sidor och funktioner skapas med PHP, ett datorskriptspråk specialiserat för enkla, automatiserade funktioner. Men Facebook utvecklar också komplexa kärnapplikationer med en mängd olika fullfjädrade datorspråk, inklusive C++, Java, Python och Ruby. För att hantera komplexiteten i detta tillvägagångssätt skapade företaget Thrift, ett applikationsramverk som låter program sammanställda från olika språk arbeta tillsammans.

Den nedre nivån består av Linux-servrar med åtta kärnor som kör MySQL, en databasserverapplikation med öppen källkod. Rothschild uppskattar att Facebook har cirka 800 sådana servrar som distribuerar cirka 40 terabyte med användardata. Denna nivå lagrar all metadata om varje objekt i databasen, till exempel en person, foto eller händelse.



Mellanskiktet består av cachningsservrar. Inte ens 800 databasservrar kan tillhandahålla all nödvändig data: Facebook tar emot 15 miljoner förfrågningar per sekund för både data och anslutningar. Stora cacheservrar, som kör Linux och Memcache-programvaran med öppen källkod, fyller tomrummet. Cirka 95 procent av datafrågorna kan fyllas från cacheservrarnas 15 terabyte RAM, så att endast 500 000 frågor per sekund behöver skickas till MySQL-databaserna och deras relativt långsamma hårddiskar.

Foton, videor och andra objekt som fyller webbnivån lagras i separata filer i datacentret.

San Francisco-anläggningen replikerar webb- och cachenivåerna, såväl som filerna med databasobjekten, men den använder Santa Clara MySQL-databasnivån.



Virginias datacenter är för långt borta för att dela MySQL-databaser: med 70 millisekunders internetfördröjning, ge eller ta, fungerar det bara inte. Således duplicerar den Santa Clara-anläggningen fullständigt, med hjälp av MySQL-replikering för att hålla databasnivåerna synkroniserade.

Vad är nästa steg för Facebooks teknik? För en sak, säger Rothschild, har företaget upptäckt att avbrott på servrarnas Ethernet-kontroller – som låter servrarna bearbeta otaliga förfrågningar som kommer samtidigt – är en flaskhals, eftersom de vanligtvis bara hanteras av en kärna. Så Facebook skrev om kontrollernas drivrutiner för att skala på flerkärniga system. Facebook experimenterar också med solid-state-enheter, vilket kan påskynda prestandan för MySQL-databasnivån med en faktor 100.

Med tanke på att Facebook växer – och att anslutningarna växer exponentiellt – kommer webbplatsen att behöva den prestandan snart.



Dölj