it-swarm.com.de

Facebook-Architektur

Ich habe nach Artikeln/Informationen über die Architektur bei Facebook gesucht, nach den Herausforderungen und Möglichkeiten, wie sie diese angehen. Was sie verwenden und warum sie verwenden. Wie skalieren sie und was sind die Entwurfsentscheidungen für das, was sie tun? Wenn Sie wissen, welche Websites mit solch massivem Datenverkehr zu tun haben, erhalten Architekten usw. viele Hinweise, um bestimmte Dinge beim Entwerfen neuer Websites zu berücksichtigen. Ich teile, was ich gefunden habe.

  1. Facebook Science & Social Graph (Video)
  2. Bei Facebook skalieren
  3. Facebook-Chat-Architektur
  4. Facebook Blog
  5. Facebook Cassandra Architektur und Design
  6. Facebook Engineering Notes
  7. Quora - Facebook Architektur
  8. Facebook für 600 Millionen Nutzer
  9. Hadoop & seine Verwendung bei Facebook
  10. Erlang bei Facebook: Chat-Architektur
  11. Facebook Performance Caching
  12. Facebook Connect-Architektur

Ich habe 2 weitere Links, kann aber aufgrund von Einschränkungen auf dieser Website keine Beiträge verfassen. Teilen Sie uns auch mit, wenn jemand etwas Besseres hat (muss nicht nur mit Facebook in Verbindung stehen).

P.S. - Ich konnte keine guten Orte finden, um diese Forschung zu teilen, daher diese Initiative. Hoffe das hilft jemandem.

166

Nun, Facebook hat VIELE Veränderungen erfahren und es war ursprünglich nicht darauf ausgelegt, effizient zu sein. Es wurde entworfen, um seinen Job zu machen. Ich habe absolut keine Ahnung, wie der Code aussieht und Sie werden wahrscheinlich nicht viele Informationen darüber finden (aus offensichtlichen Sicherheits- und Urheberrechtsgründen), aber werfen Sie einen Blick auf die API. Sehen Sie sich an, wie oft es sich ändert und wie viel davon nicht mehr oder überhaupt nicht mehr richtig funktioniert.

Ich denke, das größte Ass in ihrem Ärmel ist der Hiphop. http://developers.facebook.com/blog/post/358 Sie können HipHop selbst verwenden: https://github.com/facebook/hiphop-php/wiki

Aber wenn Sie mich fragen, ist es eine sehr ehrgeizige und wahrscheinlich zeitraubende Aufgabe. Hiphop unterstützt nur so viel, dass es nicht einfach alles nach C++ konvertieren kann. Was sagt uns das? Nun, es sagt uns, dass Facebook die PHP Sprache NICHT voll ausnutzt. Es wird nicht die neueste Version 5.3 verwendet und ich bin bereit zu wetten, dass es immer noch eine Menge gibt, die PHP 4. Andernfalls könnten sie HipHop nicht verwenden. HipHop IS A GOOD IDEA und muss wachsen und expandieren, aber in ihm Gegenwärtig ist es nicht wirklich nützlich für viele Leute, die NEW PHP apps erstellen.

Es gibt auch PHP bis Java über Dinge wie Resin/Quercus. Auch hier unterstützt es nicht alles ...

Wenn Sie ein nicht standardmäßiges PHP -Modul verwenden, können Sie diesen Code nicht in C++ oder Java konvertieren entweder. Aber ... Werfen wir einen Blick auf PHP Module. Sie sind in C++ kompiliert. Wenn Sie also PHP Module erstellen können, die Dinge tun ( Wie beim Parsen von XML usw.) arbeiten Sie im Grunde genommen (ohne Interaktion) mit der gleichen Geschwindigkeit. Natürlich können Sie nicht einfach ein PHP Modul für jeden möglichen Bedarf und Ihre gesamte App erstellen da müsstest du neu kompilieren und es wäre viel schwieriger zu codieren usw.

Jedoch ... Es gibt einige praktische PHP Module, die bei Geschwindigkeitsproblemen helfen können. Letztendlich haben wir dieses großartige Ding, das als "die Wolke" bekannt ist, und damit auch wir kann unsere Anwendungen skalieren (inklusive PHP), so dass es nicht mehr so ​​wichtig ist. Hardware wird immer billiger. Amazon hat (wieder) die Preise gesenkt.

So lange Sie Ihre PHP App um die Idee herum programmieren, die es eines Tages brauchen wird ... Dann denke ich, dass es Ihnen gut geht und ich bin mir nicht sicher, ob ich es überhaupt tun würde Schauen Sie sich Facebook an und was sie getan haben, denn als sie es getan haben, war es eine völlig andere Welt und jetzt versuchen sie, diese Infrastruktur aufrechtzuerhalten und zu pflegen ... Nun, es gibt Dinge wie HipHop.

Wie hilft Ihnen HipHop? Das wird es nicht. Das geht nicht. Sie fangen neu an und können PHP 5.3. Ich würde wärmstens empfehlen, sich PHP 5.3 Frameworks und all die neuen Vorteile, die PHP 5.3 bringt die SPL-Bibliotheken mit in die Tabelle und berücksichtigt auch Ihre Datenbank. Sie stellen höchstwahrscheinlich Inhalte aus einer Datenbank bereit. Schauen Sie sich also MongoDB und andere Arten von Datenbanken an, die kein Schema enthalten und dokumentenorientiert: Sie sind viel schneller und besser für die gängigsten Arten von Websites/Apps.

Schauen Sie sich NEUE Unternehmen wie Foursquare und Smugmug sowie einige andere Unternehmen an, die NEUE Technologien einsetzen und wie sie diese einsetzen. Für so erfolgreich wie Facebook, würde ich sie ehrlich gesagt nicht nach "wie" betrachten, um eine effiziente Website/App zu erstellen. Ich sage nicht, dass es dort keine sehr (sehr) talentierten Leute gibt, die (ihre) Probleme kreativ lösen. Ich sage auch nicht, dass Facebook im Allgemeinen keine großartige Idee ist und dass dies nicht der Fall ist Erfolgreich und dass Sie keine Ideen bekommen sollten ... Ich sage nur, dass Sie wahrscheinlich nicht davon profitieren würden, wenn Sie den gesamten Quellcode anzeigen könnten.

33
Tom

Facebook verwendet LAMP-Struktur . Die Back-End-Dienste von Facebook sind in verschiedenen Programmiersprachen wie C++, Java, Python und Erlang geschrieben und werden je nach Anforderung verwendet. Mit LAMP verwendet Facebook einige Technologien, um eine große Anzahl von Anfragen zu unterstützen, wie z

  1. Memcache - Es ist ein Speicher-Caching-System, das verwendet wird, um dynamische datenbankgesteuerte Websites (wie Facebook) zu beschleunigen, indem Daten und Objekte in RAM) zwischengespeichert werden, um die Lesezeit zu verkürzen Memcache ist die primäre Form des Zwischenspeicherns bei Facebook und trägt zur Verringerung der Datenbanklast bei. Durch ein Zwischenspeichersystem kann Facebook so schnell wie beim Abrufen Ihrer Daten sein.

  2. Thrift (protocol) - Es handelt sich um ein leichtes Remote Procedure Call Framework für die Entwicklung skalierbarer sprachübergreifender Dienste. Thrift unterstützt C++, PHP, Python, Perl, Java, Ruby, Erlang und andere.

  3. Cassandra (Datenbank) - Es handelt sich um ein Datenbankverwaltungssystem, mit dem große Datenmengen verarbeitet werden können, die auf viele Server verteilt sind.

  4. HipHop für PHP - Es ist ein Quellcode-Umsetzer für PHP= Skriptcode und wurde erstellt, um Serverressourcen zu sparen. HipHop-Umsetzer PHP Quellcode in optimiertes C++. Anschließend kompiliert es ihn mit g ++ zu Maschinencode.

Wenn wir näher darauf eingehen, wird die Beantwortung dieser Frage länger dauern. Wir können mehr von folgenden Beiträgen verstehen:

  1. Wie funktioniert Facebook?
  2. Datenverwaltung im Facebook-Stil
  3. Facebook Datenbank Design?
  4. Datenbankstruktur der Facebook-Pinnwand
  5. Facebook "like" Datenstruktur
17
Somnath Muluk

"Das Wissen über Websites, die einen derart hohen Datenverkehr bewältigen, gibt Architekten usw. viele Hinweise, um bestimmte Dinge beim Entwerfen neuer Websites zu berücksichtigen."

Ich denke, Sie können wahrscheinlich viel aus dem Design von Facebook lernen, genauso wie Sie aus dem Design eines erfolgreichen großen Softwaresystems. Es scheint mir jedoch, dass Sie nicht das aktuelle Design von Facebook im Auge behalten sollten, wenn Sie neue Systeme entwerfen.

Warum möchten Sie in der Lage sein, mit dem Verkehr umzugehen, den Facebook bewältigen muss? Die Chancen stehen gut, dass Sie das nie müssen, egal wie talentiert Sie als Programmierer sind. Facebook selbst war von Anfang an nicht auf eine derart massive Skalierbarkeit ausgelegt, was vielleicht die wichtigste Lektion ist, um daraus zu lernen.

Wenn Sie mehr über ein nicht triviales Softwaresystem erfahren möchten, kann ich das Buch "Zerlegen einer C # -Anwendung" zur Entwicklung der SharpDevelop-IDE empfehlen. Es ist vergriffen, aber es ist kostenlos online erhältlich . Das Buch gibt Ihnen einen Einblick in eine reale Anwendung und liefert Einblicke in IDEs, die für einen Programmierer nützlich sind.

7
Jørgen Fogh