So funktioniert Facebook

Facebook ist ein wunderbares Beispiel für den Netzwerkeffekt, bei dem der Wert eines Netzwerks für einen Benutzer exponentiell proportional zur Anzahl anderer Benutzer dieses Netzwerks ist.

Die Macht von Facebook leitet sich von dem ab, was Jeff Rothschild, sein Vizepräsident für Technologie, den sozialen Graphen nennt – die Summe der wild unterschiedlichen Verbindungen zwischen den Benutzern der Website und ihren Freunden; zwischen Menschen und Ereignissen; zwischen Ereignissen und Fotos; zwischen Fotos und Personen; und zwischen einer großen Anzahl diskreter Objekte, die durch Metadaten verbunden sind, die sie und ihre Verbindungen beschreiben.

Das Geschäft mit sozialen Netzwerken

Diese Geschichte war Teil unserer Juli-Ausgabe 2008



  • Siehe den Rest der Ausgabe
  • Abonnieren

Facebook unterhält Rechenzentren in Santa Clara, CA; San Francisco; und Nord-Virginia. Die Zentren basieren auf drei Ebenen von x86-Servern, die mit Open-Source-Software geladen sind, von denen einige von Facebook selbst erstellt wurden.

Schauen wir uns die Haupteinrichtung in Santa Clara an und zeigen wir dann, wie sie mit ihren Geschwistern interagiert.

Die oberste Schicht des Facebook-Netzwerks besteht aus den Webservern, die die Webseiten erstellen, die Benutzer sehen, die meisten mit acht Kernen, auf denen 64-Bit-Linux und Apache ausgeführt werden. Viele Seiten und Funktionen des sozialen Netzwerks werden mit PHP erstellt, einer Computer-Skriptsprache, die auf einfache, automatisierte Funktionen spezialisiert ist. Aber Facebook entwickelt auch komplexe Kernanwendungen unter Verwendung einer Vielzahl von Computersprachen mit vollem Funktionsumfang, darunter C++, Java, Python und Ruby. Um die Komplexität dieses Ansatzes zu bewältigen, hat das Unternehmen Thrift entwickelt, ein Anwendungs-Framework, mit dem aus verschiedenen Sprachen kompilierte Programme zusammenarbeiten können.

Die unterste Ebene besteht aus Acht-Kern-Linux-Servern, auf denen MySQL, eine Open-Source-Datenbankserveranwendung, ausgeführt wird. Rothschild schätzt, dass Facebook über etwa 800 solcher Server verfügt, die etwa 40 Terabyte an Benutzerdaten verteilen. Auf dieser Ebene werden alle Metadaten zu jedem Objekt in der Datenbank gespeichert, beispielsweise zu einer Person, einem Foto oder einem Ereignis.

Die mittlere Schicht besteht aus Caching-Servern. Selbst 800 Datenbankserver können nicht alle benötigten Daten bereitstellen: Facebook erhält 15 Millionen Anfragen pro Sekunde sowohl für Daten als auch für Verbindungen. Geballte Cache-Server, auf denen Linux und die Open-Source-Memcache-Software ausgeführt werden, füllen die Lücke. Rund 95 Prozent der Datenanfragen können aus dem 15 Terabyte Arbeitsspeicher der Cache-Server gefüllt werden, sodass nur 500.000 Anfragen pro Sekunde an die MySQL-Datenbanken und deren relativ langsame Festplatten weitergegeben werden müssen.

Fotos, Videos und andere Objekte, die die Webschicht bevölkern, werden in separaten Ordnern im Rechenzentrum gespeichert.

Die Einrichtung in San Francisco repliziert die Web- und Cache-Schichten sowie die Filer mit den Datenbankobjekten, verwendet jedoch die Santa Clara MySQL-Datenbankschicht.

Das Rechenzentrum in Virginia ist zu weit entfernt, um MySQL-Datenbanken gemeinsam zu nutzen: Mit 70 Millisekunden Internetverzögerung wird es einfach nicht funktionieren. Somit dupliziert es die Santa Clara-Einrichtung vollständig und verwendet die MySQL-Replikation, um die Datenbankschichten synchron zu halten.

Was kommt als nächstes für die Technologie von Facebook? Zum einen, so Rothschild, habe das Unternehmen herausgefunden, dass Interrupts auf den Ethernet-Controllern der Server – die es den Servern ermöglichen, unzählige gleichzeitig ankommende Anfragen zu verarbeiten – ein Flaschenhals sind, da sie in der Regel nur von einem Kern bearbeitet werden. Daher hat Facebook die Treiber der Controller neu geschrieben, um sie auf Multicore-Systemen zu skalieren. Facebook experimentiert auch mit Solid-State-Laufwerken, die die Leistung der MySQL-Datenbankschicht um den Faktor 100 beschleunigen könnten.

Angesichts der Tatsache, dass Facebook wächst – und die Verbindungen exponentiell zunehmen – wird die Site diese Leistung bald benötigen.

verbergen