Architecture Facebook [fermé]

j'ai cherché des articles/informations sur L'architecture de Facebook, les défis et les façons de les relever. Ce qu'ils utilisent et pourquoi ils utilisent. Comment sont-ils dimensionnés et quelles sont les décisions de conception pour ce qu'ils font, etc. Principal fondement 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 certaines choses tout en concevant de nouveaux sites. Je partage ce que j'ai trouvé.

  1. Facebook Science & Graphe Social (Vidéo)
  2. échelle sur Facebook
  3. Facebook Chat Architecture
  4. Facebook Blog
  5. Facebook Cassandra Architecture and Design
  6. Facebook De L'Ingénierie Des Notes
  7. Quora - Facebook Architecture
  8. Facebook pour 600 MILLIONS d'utilisateurs de
  9. Hadoop et son utilisation de Facebook
  10. Erlang sur Facebook: Chat Architecture
  11. Facebook De La Performance De La Mise En Cache
  12. Facebook Connect Architecture

j'ai 2 autres liens mais impossible à afficher en raison de restrictions sur ce site. En outre, s'il vous plaît partager si quelqu'un a quelque chose de mieux (ne doit pas être liée à Facebook seulement).

P. - Je n'ai pas pu trouver de bons endroits pour partager cette recherche, d'où cette initiative. Espérons que cela aide quelqu'un.

157
demandé sur Geert Bellekens 2010-08-20 22:52:04

3 réponses

Bien Facebook a subi de nombreux changements et il n'a pas été conçu à l'origine pour être efficace. Il a été conçu pour faire le travail. Je n'ai absolument aucune idée de ce à 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 juste un oeil à L'API. Regardez à quelle fréquence il change et combien de lui ne fonctionne pas correctement, plus, ou du tout.

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

mais si vous voulez mon avis, c'est une tâche très ambitieuse et qui risque de perdre du temps. Hiphop supporte tellement de choses qu'il ne peut pas tout simplement tout convertir en C++. Qu'est ce que cela nous dit? Et bien, ça nous dit que Facebook ne profite pas pleinement du langage PHP. Il n'utilise pas le dernier 5.3 et je suis prêt à je parie qu'il y a encore beaucoup de choses qui sont compatibles avec PHP 4. Sinon, ils ne pourraient pas utiliser HipHop. HipHop est une bonne idée et a besoin de se développer et de s'étendre, mais dans son état actuel, ce N'est pas vraiment utile pour autant de gens qui construisent de nouvelles applications PHP.

il y a aussi PHP à 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 n'allez pas être en mesure de convertir ce code en C++ ou en Java. Cependant...Laissez jeter un oeil à des modules PHP. Ils sont compilés en C++. Donc, si vous pouvez construire des modules PHP qui font des choses (comme parse XML, etc.) alors vous êtes essentiellement (moins une certaine interaction) travaillant à la même vitesse. Bien sûr, vous ne pouvez pas simplement faire un module PHP pour chaque besoin possible et votre application entière parce que vous auriez à recompiler et il serait beaucoup plus difficile de coder, etc.

cependant...Il y a quelques modules PHP pratiques ça peut aider pour les problèmes de vitesse. Bien qu'à la fin de la journée, nous avons ce truc génial connu sous le nom de "cloud" et avec lui, nous pouvons mettre à l'échelle nos applications (PHP inclus) de sorte qu'il ne compte plus autant. Le matériel devient de moins en moins cher. Amazon vient de baisser ses prix (encore) parlant.

donc aussi longtemps que vous codez votre application PHP autour de l'idée qu'il aura besoin d'une échelle d'un jour...Alors je pense que tu vas bien et je ne suis pas sûr que je pourrais même regarder Facebook et ce qu'ils ont fait parce que quand ils l'ont fait, c'était un monde complètement différent et maintenant essayer de tenir jusqu'à ce l'infrastructure et de l'entretenir...Eh bien, vous obtenez des choses comme HipHop.

comment Hip Hop va t'aider? Ça n'arrivera pas. C'est impossible. Vous commencez frais, vous pouvez utiliser PHP 5.3. Je recommande vivement de regarder dans les cadres de PHP 5.3 et tous les nouveaux avantages que PHP 5.3 apporte à la table avec les bibliothèques SPL et aussi penser à votre base de données aussi. Vous êtes le plus à l' probablement servir le contenu d'une base de données, donc vérifier MongoDB et d'autres types de bases de données qui sont sans schéma et axée sur la documentation. Ils sont beaucoup plus rapides et meilleurs pour le type le plus "commun" de site web/application.

regardez les nouvelles entreprises comme Foursquare et Smugmug et certaines autres entreprises qui utilisent la nouvelle technologie et comment ils l'utilisent. Pour aussi réussi que Facebook est, je honnêtement ne les regarderais pas pour" Comment " pour construire un site web/application efficace. Je ne dis pas qu'ils n'ont pas de personnes très talentueuses qui travaillent là-bas et qui résolvent (leurs) problèmes de façon créative...Je ne dis pas non plus que Facebook n'est pas une bonne idée en général et qu'elle n'a pas de succès et qu'il ne faut pas en tirer des idées....Je dis juste que si tu pouvais voir tout leur code source, tu n'en profiterais probablement pas.

31
répondu Tom 2010-11-03 16:56:34

Facebook utilise LAMP structure . Les services back-end de Facebook sont écrits dans une variété de langages de programmation différents, y compris C++, Java, Python, et Erlang et ils sont utilisés selon les exigences. Avec LAMP Facebook utilise certaines technologies, pour soutenir un grand nombre de demandes, comme

  1. Memcache - c'est un système de cache de mémoire qui est utilisé pour accélérer la dynamique sites web basés sur des bases de données (comme Facebook) en cachant des données et des objets en RAM pour 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 base de données. Avoir un système de mise en cache permet à Facebook d'être aussi rapide qu'il l'est à rappeler vos données.

  2. Thrift (protocol) - il s'agit d'un cadre léger d'appel de procédures à distance pour le développement de services translangues évolutifs. Thrift prend en charge le C++, PHP, Python, Perl, Java, Ruby, Erlang, et d'autres.

  3. Cassandra (database) - il s'agit d'un système de gestion de base de données conçu pour traiter de grandes quantités de données réparties sur de nombreux serveurs.

  4. HipHop for PHP - c'est un transformateur de code source pour le code de script PHP et a été créé pour sauver les ressources du serveur. HipHop transforme le code source PHP en optimisé C++. Après cela, il utilise g++ pour le compiler en code machine.

si nous entrons dans plus de détails, alors la réponse à cette question va plus loin. Nous pouvons en comprendre plus à partir des messages suivants:

  1. Comment Facebook Fonctionne-T-Il?
  2. gestion des données, Facebook-style
  3. conception de la base de données Facebook?
  4. structure de la base de données du mur Facebook
  5. Facebook "j'aime" structure de données
15
répondu Somnath Muluk 2017-05-23 10:31:19

" connaître les sites qui traite tel le trafic massif donne beaucoup de les pointeurs pour les architectes, etc. garder dans l'esprit certaines choses tout en concevant de nouveaux sites

je pense que vous pouvez probablement apprendre beaucoup de la conception de Facebook, tout comme vous pouvez de la conception de n'importe quel grand système logiciel réussi. Cependant, il me semble que vous devriez pas garder le design actuel de Facebook à l'esprit quand concevoir de nouveaux systèmes.

Pourquoi voulez-vous être en mesure de gérer le trafic de Facebook a gérer? Les chances sont que vous n'aurez jamais à vous, peu importe le talent de programmeur vous peut-être. Facebook lui-même n'a pas été conçu dès le début pour une telle extensibilité massive, qui est peut-être la leçon la plus importante à en tirer.

si vous voulez en savoir plus sur un système logiciel non trivial je peux vous recommander le livre "Dissecting a C# Application" le développement de L'IDE SharpDevelop. Il est épuisé, mais il est disponible gratuitement en ligne . Le livre vous donne un aperçu d'une application réelle et fournit des idées sur les IDEs qui sont utiles pour un programmeur.

7
répondu Jørgen Fogh 2018-04-11 14:28:24