211service.com
Hoe Facebook werkt
Facebook is een prachtig voorbeeld van het netwerkeffect, waarbij de waarde van een netwerk voor een gebruiker exponentieel evenredig is met het aantal andere gebruikers dat dat netwerk heeft.
De kracht van Facebook komt voort uit wat Jeff Rothschild, de vice-president van technologie, de sociale grafiek noemt: de som van de enorm verschillende verbindingen tussen de gebruikers van de site en hun vrienden; tussen mensen en gebeurtenissen; tussen evenementen en foto's; tussen foto's en mensen; en tussen een groot aantal discrete objecten die zijn verbonden door metadata die ze en hun verbindingen beschrijven.
Dit verhaal maakte deel uit van ons nummer van juli 2008
- Zie de rest van het nummer
- Abonneren
Facebook onderhoudt datacenters in Santa Clara, CA; San Francisco; en Noord-Virginia. De centra zijn gebouwd op de achterkant van drie lagen x86-servers die zijn geladen met open-sourcesoftware, waarvan sommige zelf door Facebook zijn gemaakt.
Laten we eens kijken naar de hoofdfaciliteit, in Santa Clara, en dan laten zien hoe deze omgaat met zijn broers en zussen.
De bovenste laag van het Facebook-netwerk bestaat uit de webservers die de webpagina's maken die gebruikers zien, de meeste met acht cores met 64-bits Linux en Apache. Veel van de pagina's en functies van het sociale netwerk zijn gemaakt met behulp van PHP, een computerscripttaal die is gespecialiseerd in eenvoudige, geautomatiseerde functies. Maar Facebook ontwikkelt ook complexe kernapplicaties met behulp van een verscheidenheid aan complete computertalen, waaronder C++, Java, Python en Ruby. Om de complexiteit van deze aanpak te beheersen, creëerde het bedrijf Thrift, een applicatieraamwerk waarmee programma's die uit verschillende talen zijn samengesteld, kunnen samenwerken.
De onderste laag bestaat uit acht-core Linux-servers met MySQL, een open-source databaseservertoepassing. Rothschild schat dat Facebook ongeveer 800 van dergelijke servers heeft die ongeveer 40 terabyte aan gebruikersgegevens verspreiden. Deze laag slaat alle metadata op over elk object in de database, zoals een persoon, foto of gebeurtenis.
De middelste laag bestaat uit caching-servers. Zelfs 800 databaseservers kunnen niet alle benodigde gegevens aanleveren: Facebook ontvangt 15 miljoen verzoeken per seconde voor zowel gegevens als verbindingen. Opgehoopte cacheservers, met Linux en de open-source Memcache-software, vullen de leemte op. Ongeveer 95 procent van de gegevensquery's kan worden gevuld met de 15 terabyte RAM van de cacheservers, zodat er slechts 500.000 query's per seconde hoeven te worden doorgegeven aan de MySQL-databases en hun relatief trage harde schijven.
Foto's, video's en andere objecten die de weblaag vullen, worden opgeslagen in afzonderlijke bestanden in het datacenter.
De faciliteit in San Francisco repliceert de web- en cachelagen, evenals de filers met de databaseobjecten, maar gebruikt de Santa Clara MySQL-databaselaag.
Het datacenter in Virginia is te ver weg om MySQL-databases te delen: met 70 milliseconden internetvertraging, geven of nemen, werkt het gewoon niet. Het dupliceert dus volledig de Santa Clara-faciliteit en gebruikt MySQL-replicatie om de databaselagen synchroon te houden.
Wat biedt de toekomst voor de technologie van Facebook? Om te beginnen, zegt Rothschild, heeft het bedrijf ontdekt dat interrupts op de Ethernet-controllers van de servers - waarmee de servers talloze verzoeken die tegelijkertijd binnenkomen - een knelpunt vormen, omdat ze over het algemeen door slechts één kern worden afgehandeld. Dus Facebook herschreef de stuurprogramma's van de controllers om te schalen op multicore-systemen. Facebook experimenteert ook met solid-state schijven, die de prestaties van de MySQL-databaselaag met een factor 100 zouden kunnen versnellen.
Gezien het feit dat Facebook groeit - en dat verbindingen exponentieel groeien - zal de site die prestatie binnenkort nodig hebben.