Sådan fungerer Facebook

Facebook er et vidunderligt eksempel på netværkseffekten, hvor værdien af ​​et netværk for en bruger er eksponentielt proportional med antallet af andre brugere, netværket har.





Facebooks magt stammer fra det, Jeff Rothschild, dets vicepræsident for teknologi, kalder den sociale graf – summen af ​​de vildt forskellige forbindelser mellem webstedets brugere og deres venner; mellem mennesker og begivenheder; mellem begivenheder og fotos; mellem billeder og mennesker; og mellem et stort antal diskrete objekter forbundet med metadata, der beskriver dem og deres forbindelser.

Sociale netværks forretning

Denne historie var en del af vores juli 2008-udgave

  • Se resten af ​​problemet
  • Abonner

Facebook vedligeholder datacentre i Santa Clara, Californien; San Francisco; og det nordlige Virginia. Centrene er bygget på bagsiden af ​​tre niveauer af x86-servere fyldt med open source-software, nogle som Facebook selv har skabt.



Lad os se på hovedfaciliteten i Santa Clara og så vise, hvordan den interagerer med sine søskende.

Det øverste niveau af Facebook-netværket består af de webservere, der skaber de websider, som brugerne ser, de fleste med otte kerner, der kører 64-bit Linux og Apache. Mange af det sociale netværks sider og funktioner er oprettet ved hjælp af PHP, et computerscriptsprog, der er specialiseret til simple, automatiserede funktioner. Men Facebook udvikler også komplekse kerneapplikationer ved hjælp af en række fuld-funktionelle computersprog, herunder C++, Java, Python og Ruby. For at styre kompleksiteten af ​​denne tilgang, skabte virksomheden Thrift, en applikationsramme, der lader programmer kompileret fra forskellige sprog arbejde sammen.

Det nederste niveau består af otte-core Linux-servere, der kører MySQL, en open source-databaseserverapplikation. Rothschild anslår, at Facebook har omkring 800 sådanne servere, der distribuerer omkring 40 terabyte brugerdata. Dette niveau gemmer alle metadata om hvert objekt i databasen, såsom en person, foto eller begivenhed.



Det mellemste lag består af caching-servere. Selv 800 databaseservere kan ikke levere alle de nødvendige data: Facebook modtager 15 millioner anmodninger i sekundet for både data og forbindelser. Bulk-up cache-servere, der kører Linux og open source Memcache-softwaren, udfylder hullet. Omkring 95 procent af dataforespørgsler kan udfyldes fra cache-servernes 15 terabyte RAM, så der kun skal sendes 500.000 forespørgsler i sekundet til MySQL-databaserne og deres relativt langsomme harddiske.

Fotos, videoer og andre objekter, der udfylder weblaget, gemmes i separate filer i datacentret.

San Francisco-faciliteten replikerer web- og cache-lagene såvel som filerne med databaseobjekterne, men den bruger Santa Clara MySQL-databaselaget.



Virginia-datacentret er for langt væk til at dele MySQL-databaser: Med 70 millisekunders internetforsinkelse, giv eller tag, virker det bare ikke. Således dublerer den Santa Clara-faciliteten fuldstændigt ved at bruge MySQL-replikering til at holde databaselagene synkroniseret.

Hvad er det næste for Facebooks teknologi? For én ting, siger Rothschild, har virksomheden opdaget, at afbrydelser på servernes Ethernet-controllere – som lader serverne behandle utallige anmodninger, der ankommer på samme tid – er en flaskehals, da de generelt kun håndteres af én kerne. Så Facebook omskrev controllernes drivere for at skalere på multicore-systemer. Facebook eksperimenterer også med solid-state-drev, som kan fremskynde ydeevnen af ​​MySQL-databaselaget med en faktor 100.

I betragtning af, at Facebook vokser - og at forbindelser vokser eksponentielt - vil webstedet snart få brug for denne ydeevne.



skjule