Wie Facebook die Daten von 300 Millionen Nutzern verkraftet
Durch solche und weitere Optimierungen sei es gelungen, die Zahl der physischen I/O-Zugriffe pro ausgeliefertem Bild von rund 10 auf rund 3 zu senken. Letztendlich aber entwickelte Facebook mit Haystack ein eigenes Open-Source-Dateisystem zum Speichern großer Bildermengen, das pro ausgeliefertem Bild nur noch einen I/O-Zugriff benötigt. So sei es nun möglich, rund viermal mehr Bilder mit der gleichen Hardware auszuliefern.
PHP für die Webserver
Die grundlegende Architektur der Facebook-Plattform gliedert sich in drei Schichten: ein Loadbalancer reicht Daten an Webserver weiter, die ihrerseits auf Dienste, Memcached und Datenbanken zugreifen. Bei den Webservern setze Facebook auf PHP als Scriptsprache, da PHP leicht zu lernen, zu programmieren und debuggen sei. Dem stehen hohen Runtimekosten gegenüber, denn PHP brauche viel Speicher und Rechenzeit. Zudem sei die Verbindung mit C++ eine Herausforderung und bei großer Codemenge werfe PHP gewisse organisatorische Probleme auf. Auch mache neuer Code alten langsamer, selbst wenn dieser in keinem Zusammenhang stehe, da der Initialisierungsaufwand, der bei jeder Anfrage anfällt, steige.
Um dem entgegen zu wirken, hat Facebook einige Optimierungen vorgenommen und beispielsweise den APC (Advanced PHP Cache) um Lazy-Loading, Cache-Priming und effizientere Locking-Funktionen erweitert. Zudem wurde eine eigene Memcached-Client-Erweiterung sowie Mechanismen zum asynchronen Event-Handling geschrieben. Derzeit arbeitet Facebook an einem Compiler, der PHP in C++ umsetzt, um daraus hoch optimierte ausführbare Dateien zu machen.
Die Webserver greifen auf Backendsysteme zurück, die in aller Regel in C++ implementiert werden, nutzen aber auch andere Sprachen wie Python, Ruby oder Erlang - je nachdem, welche für die aktuelle Aufgabe am besten geeignet ist. Facebooks Suchdienst ein solches Beispiel.
25 TByte Logfiles pro Tag
Ein weiteres Backendsystem ist Scribe, mit dem Facebook seine große Menge an Logfiledaten verarbeitet, denn täglich fallen rund 25 TByte an Logfiles auf den Servern an, die chronologisch konsolidiert werden müssen. Letztendlich verarbeitet ein Hadoop-Cluster mit rund 1.000 Nodes die Daten und erlaubt Analysen des Nutzerverhaltens, um herauszufinden, wie neue Funktionen von Nutzern verwendet werden.
Wie Facebook die Daten von 300 Millionen Nutzern verkraftet | Wie Facebook die Daten von 300 Millionen Nutzern verkraftet |
Eins wird da wohl völlig reichen und selbst dann haste noch etliche Ressourcen frei um...
Schon gewusst, Facebook setzt MySQL gar nicht als relationale Datenbank ein. MySQL dient...
Da ich grad an der UCSD studiere, konnte mir das das anhören. Kann jedem Technik...
Dir ist aber schon klar, das Abmelden nicht gleich löschen heisst. Meist werden deine...