Architecture de Facebook

J’ai recherché des articles / informations sur l’architecture de Facebook, les défis et les moyens de les résoudre. Qu’est-ce qu’ils utilisent et pourquoi ils utilisent. Comment sont-ils mis à l’échelle et quelles sont les décisions de conception pour ce qu’ils font, etc. Le fondement principal est d’apprendre. Connaître les sites qui gèrent un trafic aussi important donne beaucoup de conseils aux architectes, etc., pour garder à l’esprit certains éléments lors de la conception de nouveaux sites. Je partage ce que j’ai trouvé.

  1. Science Facebook et graphique social (vidéo)
  2. Echelle chez Facebook
  3. Architecture de chat Facebook
  4. Blog Facebook
  5. Facebook Cassandra Architecture et Design
  6. Notes techniques sur Facebook
  7. Quora – Architecture de Facebook
  8. Facebook pour 600 millions d’utilisateurs
  9. Hadoop et son utilisation sur Facebook
  10. Erlang sur Facebook: Architecture de chat
  11. Mise en cache des performances Facebook
  12. Facebook Connect Architecture

J’ai 2 autres liens mais je ne peux pas poster en raison de ressortingctions sur ce site. Aussi, s’il vous plaît partager si quelqu’un a quelque chose de mieux (n’a pas besoin d’être lié à Facebook uniquement).

PS – Je n’ai pas pu trouver de bons endroits pour partager cette recherche, d’où cette initiative. J’espère que cela aide quelqu’un.

Eh bien, Facebook a subi de nombreux changements et il n’a pas été conçu pour être efficace. Il a été conçu pour faire son travail. Je ne sais absolument pas à quoi ressemble le code et vous ne trouverez probablement pas beaucoup d’informations à ce sujet (pour des raisons évidentes de sécurité et de copyright), mais jetez un coup d’œil à l’API. Regardez combien de fois ça change et combien ça ne fonctionne plus correctement, ou pas du tout.

Je pense que le plus grand atout de leur manche est le Hiphop. http://developers.facebook.com/blog/post/358 Vous pouvez utiliser HipHop vous-même: http://wiki.github.com/facebook/hiphop-php

Mais si vous me demandez, c’est une tâche très ambitieuse et probablement une perte de temps. Hiphop ne supporte que trop, il ne peut pas tout convertir en C ++. Alors qu’est-ce que cela nous dit? Eh bien, il nous dit que Facebook ne tire pas pleinement parti du langage PHP. Il n’utilise pas la dernière version 5.3 et je suis prêt à parier qu’il rest beaucoup de choses compatibles avec PHP 4. Sinon, ils ne pourraient pas utiliser HipHop. HipHop EST UNE BONNE IDÉE et doit grandir et se développer, mais dans son état actuel, ce n’est pas vraiment utile pour les nombreuses personnes qui créent de nouvelles applications PHP.

Il y a aussi PHP pour JAVA via des choses comme Resin / Quercus. Encore une fois, ça ne supporte pas tout …

Une autre chose à noter est que si vous utilisez un module PHP non standard, vous ne pourrez pas non plus convertir ce code en C ++ ou Java. Cependant … Jetons un coup d’œil aux modules PHP. Ils sont compilés en C ++. Donc, si vous pouvez créer des modules PHP capables de faire des choses (comme le XML d’parsing, etc.), vous êtes fondamentalement en train de travailler (à moins d’interaction) à la même vitesse. Bien sûr, vous ne pouvez pas créer un module PHP pour tous vos besoins et votre application entière, car il vous faudrait recomstackr et cela serait beaucoup plus difficile à coder, etc.

Cependant … Il existe des modules PHP pratiques qui peuvent aider à résoudre les problèmes de vitesse. Bien qu’au bout du compte, nous ayons cette chose géniale connue sous le nom de “cloud” et avec elle, nous pouvons adapter nos applications (PHP inclus) pour que cela n’ait plus d’importance. Le matériel devient moins cher et moins cher. Amazon vient de baisser ses prix (encore) en parlant de.

Donc, tant que vous codez votre application PHP autour de l’idée qu’elle aura besoin d’un jour d’échelle … Alors je pense que vous allez bien et que je ne suis pas vraiment sûr que je regarderais même Facebook et ce qu’ils ont fait parce que quand ils l’ont fait, c’était un monde complètement différent et essayaient maintenant de maintenir cette infrastructure et de la maintenir … Eh bien, vous obtenez des choses comme HipHop.

Maintenant, comment HipHop va vous aider? Ce ne sera pas Ça ne peut pas. Vous commencez frais, vous pouvez utiliser PHP 5.3. Je recommande fortement de consulter les frameworks PHP 5.3 et tous les nouveaux avantages que PHP 5.3 apporte aux tables SPL et d’envisager également votre firebase database. Vous êtes probablement en train de diffuser du contenu à partir d’une firebase database, alors consultez MongoDB et les autres types de bases de données sans schéma et orientées document. Ils sont beaucoup plus rapides et meilleurs pour le type de site Web / app le plus «commun».

Regardez les NOUVELLES entresockets comme Foursquare et Smugmug et certaines autres entresockets qui utilisent la NOUVELLE technologie et comment elles l’utilisent. Pour que Facebook soit un succès, honnêtement, je ne les envisagerais pas pour “comment” créer un site Web / une application efficace. Je ne dis pas qu’ils n’ont pas de gens très (très) talentueux qui travaillent là-bas et qui résolvent (leurs) problèmes de manière créative … Je ne dis pas non plus que Facebook n’est pas une bonne idée en général et que ce n’est pas le cas. succès et que vous ne devriez pas en tirer d’idées … Je dis simplement que si vous pouviez voir leur code source complet, vous n’en tireriez probablement pas profit.

Facebook utilise la structure LAMP . Les services back-end de Facebook sont écrits dans différents langages de programmation, notamment C ++, Java, Python et Erlang, et sont utilisés selon les besoins. Avec LAMP, Facebook utilise certaines technologies pour prendre en charge un grand nombre de demandes, comme

  1. Memcache – Il s’agit d’un système de cache mémoire utilisé pour accélérer les sites Web dynamics (tels que Facebook) basés sur des bases de données en mettant en cache des données et des objects dans la mémoire RAM afin de réduire le temps de lecture. Memcache est la principale forme de mise en cache de Facebook et aide à alléger la charge de la firebase database. Avoir un système de mise en cache permet à Facebook d’être aussi rapide que possible pour rappeler vos données.

  2. Thrift (protocol) – Il s’agit d’une infrastructure d’appels de procédure distante légère pour le développement de services multilingues évolutifs. Thrift prend en charge C ++, PHP, Python, Perl, Java, Ruby, Erlang et autres.

  3. Cassandra (firebase database) – C’est un système de gestion de firebase database conçu pour traiter de grandes quantités de données réparties sur de nombreux serveurs.

  4. HipHop pour PHP – C’est un transformateur de code source pour le code PHP et a été créé pour économiser les ressources du serveur. HipHop transforme le code source PHP en C ++ optimisé. Après cela, il utilise g ++ pour le comstackr en code machine.

Si nous entrons plus dans les détails, la réponse à cette question est plus longue. Nous pouvons mieux comprendre les articles suivants:

  1. Comment fonctionne Facebook?
  2. Gestion des données, style Facebook
  3. Conception de firebase database Facebook?
  4. Structure de la firebase database du mur Facebook
  5. Structure de données “comme” Facebook

“Connaître des sites qui traitent un trafic aussi important donne beaucoup de conseils aux architectes, etc. pour garder à l’esprit certains éléments lors de la conception de nouveaux sites”

Je pense que vous pouvez probablement apprendre beaucoup de la conception de Facebook, tout comme vous pouvez le faire avec la conception de tout grand système logiciel réussi. Cependant, il me semble que vous ne devriez pas garder à l’esprit la conception actuelle de Facebook lors de la conception de nouveaux systèmes.

Pourquoi voulez-vous gérer le trafic que Facebook doit gérer? Les chances sont que vous ne serez jamais obligé, peu importe le talent d’un programmeur que vous soyez. Facebook lui-même n’a pas été conçu dès le départ pour une telle évolutivité, ce qui constitue peut-être la leçon la plus importante à en tirer.

Si vous souhaitez en savoir plus sur un système logiciel non sortingvial, je peux vous recommander le livre “Dissection d’une application C #” sur le développement de l’EDI SharpDevelop. Il est épuisé, mais il est disponible en ligne gratuitement . Le livre vous donne un aperçu d’une application réelle et fournit des informations sur les IDE qui sont utiles pour un programmeur.