Architecture Facebook
• Le frond-end de Facebook (l’interface) est écrit en PHP Facebook Hip Hop (une version de PHP ultra optimisée conçu par Facebook). Ensuite, le code est compilé en C++ avec G++ pour offrir une interface réactive et performante indépendamment du nombre d’utilisateurs.
• Le Business Logic (les algorithmes qui gérent les transactions entre la base de donnée et l’interface d’utilisateur) est basé sur des services de type Thrift. Certains de ces services sont conçus avec le PHP, C++ ou le JAVA selon les besoins.
• Les services conçus en Java n’utilisent pas un environnement de logiciel propriétaire, mais c’est un composant qui a été crée par Facebook. La plupart des services utilisent principalement Thrift, car Tomcat ou Jetty ne seraient pas capables de gérer le nombre des transactions.
• La persistence est géré par MySQL, MemCached, Cassandra et Hbase de Hadoop. MemCached est utilisé pour le cache de MySQL et des autres mémoires cache. Facebook délaisse progressivement Cassandra au profit de Hbase grâce à son modèle simplifié et l’intégration de MapReduce.
• Les activités hors lignes sont gérées par Hadoop et Hive.
• Les données tels que la connexion, les clics et les feeds sont gerées par Scribe et elles sont stockées avec Scribe-HDFS ce qui permet une analyse optimale avec MapReduce.
• L’accélération du rendu des pages utilise la technologie personnalisée BigPipe.
• Le cache Varnish est utilisé pour le proxying du HTTP.
• Le stockage des milliards d’images est géré par HayStack, une solution de stockage développée par Facebook qui permet des optimisations de bas niveau.
• Les messages de Facebook utilise sa propre architecture basée sur l’infrastructure Sharding et la gestion dynamique des clusters. Le Business Logic et la persistence sont encapsulés dans une entité appelée Cellule. Chaque Cellule gère un certain nombre d’utilisateurs et de nouvelles cellules peuvent être ajoutées si c’est nécessaire. La persistence est basé sur Hbase.
• Le moteur de recherche des messages Facebook est conçu avec un index inversé qui est stocké dans Hbase.
• La recherche TypeaHead utilise son propre module de stockage et une recherche logique.
• Le chat Facebook est basé sur le serveur Epoll qui a été conçu par Erlang et son accès est géré par Thrift.
Les ressources matérielles pour faire fonctionner Facebook :
[#] Facebook possède environ 60 000 serveurs. Leur Datacenter dans la ville de Prineville dans l’Oregon est une architecture entièrement personnalisée qui est un projet de type Open Compute. On estime que 300 To de données seront stockées dans des processus MemCached.
[#] Les clusters Hive et Hadoop de Facebook utilise 3000 serveurs de 8 coeurs, 32 Go de RAM et de 12 To d’espace disque ce qui fournit une puissance globale de 24 000 coeurs en processeur, 96 To de RAM et 36 Petabytes d’espace disque.
[#] Chaque jour, Facebook génère environ 100 milliards de clic, 50 miliards d’images, 3 trillions d’objets qui utiisent le cache et leur fichier log d’une journée pèse 130 To (Statistiques 2010)
Liens très utiles :
HipHop for PHP : http://developers.facebook.com/blog/...hp--move-fast/
Making HPHPi Faster : http://www.facebook.com/note.php?not...50336948348920
The HipHop Virtual Machine : http://www.facebook.com/note.php?not...50415177928920
Thrift : http://thrift.apache.org/
Memcached : http://memcached.org/
HBase : http://hbase.apache.org/
Scribe : https://github.com/facebook/scribe
Scribe-HDFS : http://hadoopblog.blogspot.fr/2009/0...tegration.html
BigPipe : http://www.facebook.com/notes/facebo...e/389414033919
Varnish Cache : http://www.varnish-cache.org/
Facebook goes for Varnish : https://www.varnish-software.com/ref...media/facebook
Needle in a haystack : efficient storage of billions of photos : http://www.facebook.com/note.php?note_id=76191543919
Scaling the Messages Application Back End : http://www.facebook.com/note.php?not...50148835363920
The Underlying Technology of Messages : https://www.facebook.com/note.php?note_id=454991608919
The Underlying Technology of Messages Tech Talk : http://www.facebook.com/video/video.php?v=690851516105
Facebook's typeahead search architecture : http://www.facebook.com/video/video.php?v=432864835468
Facebook Chat : http://www.facebook.com/note.php?note_id=14218138919
Open Compute Project : http://www.facebook.com/note.php?not...50144039563920
Open Compute Project official : http://opencompute.org/
FaceBook real time analytics system 2011 : http://ht.ly/8OGHD
Data Warehousing and Analytics Infrastructure at Facebook : http://borthakur.com/ftp/sigmodwarehouse2010.pdf
Apache Hadoop Goes Realtime at Facebook : http://borthakur.com/ftp/RealtimeHadoopSigmod2011.pdf
Scalable Memory Allocation using jemalloc : http://www.facebook.com/notes/facebo...c/480222803919
Tornado web framework : https://github.com/facebook/tornado
src:michael figuiere
• Le frond-end de Facebook (l’interface) est écrit en PHP Facebook Hip Hop (une version de PHP ultra optimisée conçu par Facebook). Ensuite, le code est compilé en C++ avec G++ pour offrir une interface réactive et performante indépendamment du nombre d’utilisateurs.
• Le Business Logic (les algorithmes qui gérent les transactions entre la base de donnée et l’interface d’utilisateur) est basé sur des services de type Thrift. Certains de ces services sont conçus avec le PHP, C++ ou le JAVA selon les besoins.
• Les services conçus en Java n’utilisent pas un environnement de logiciel propriétaire, mais c’est un composant qui a été crée par Facebook. La plupart des services utilisent principalement Thrift, car Tomcat ou Jetty ne seraient pas capables de gérer le nombre des transactions.
• La persistence est géré par MySQL, MemCached, Cassandra et Hbase de Hadoop. MemCached est utilisé pour le cache de MySQL et des autres mémoires cache. Facebook délaisse progressivement Cassandra au profit de Hbase grâce à son modèle simplifié et l’intégration de MapReduce.
• Les activités hors lignes sont gérées par Hadoop et Hive.
• Les données tels que la connexion, les clics et les feeds sont gerées par Scribe et elles sont stockées avec Scribe-HDFS ce qui permet une analyse optimale avec MapReduce.
• L’accélération du rendu des pages utilise la technologie personnalisée BigPipe.
• Le cache Varnish est utilisé pour le proxying du HTTP.
• Le stockage des milliards d’images est géré par HayStack, une solution de stockage développée par Facebook qui permet des optimisations de bas niveau.
• Les messages de Facebook utilise sa propre architecture basée sur l’infrastructure Sharding et la gestion dynamique des clusters. Le Business Logic et la persistence sont encapsulés dans une entité appelée Cellule. Chaque Cellule gère un certain nombre d’utilisateurs et de nouvelles cellules peuvent être ajoutées si c’est nécessaire. La persistence est basé sur Hbase.
• Le moteur de recherche des messages Facebook est conçu avec un index inversé qui est stocké dans Hbase.
• La recherche TypeaHead utilise son propre module de stockage et une recherche logique.
• Le chat Facebook est basé sur le serveur Epoll qui a été conçu par Erlang et son accès est géré par Thrift.
Les ressources matérielles pour faire fonctionner Facebook :
[#] Facebook possède environ 60 000 serveurs. Leur Datacenter dans la ville de Prineville dans l’Oregon est une architecture entièrement personnalisée qui est un projet de type Open Compute. On estime que 300 To de données seront stockées dans des processus MemCached.
[#] Les clusters Hive et Hadoop de Facebook utilise 3000 serveurs de 8 coeurs, 32 Go de RAM et de 12 To d’espace disque ce qui fournit une puissance globale de 24 000 coeurs en processeur, 96 To de RAM et 36 Petabytes d’espace disque.
[#] Chaque jour, Facebook génère environ 100 milliards de clic, 50 miliards d’images, 3 trillions d’objets qui utiisent le cache et leur fichier log d’une journée pèse 130 To (Statistiques 2010)
Liens très utiles :
HipHop for PHP : http://developers.facebook.com/blog/...hp--move-fast/
Making HPHPi Faster : http://www.facebook.com/note.php?not...50336948348920
The HipHop Virtual Machine : http://www.facebook.com/note.php?not...50415177928920
Thrift : http://thrift.apache.org/
Memcached : http://memcached.org/
HBase : http://hbase.apache.org/
Scribe : https://github.com/facebook/scribe
Scribe-HDFS : http://hadoopblog.blogspot.fr/2009/0...tegration.html
BigPipe : http://www.facebook.com/notes/facebo...e/389414033919
Varnish Cache : http://www.varnish-cache.org/
Facebook goes for Varnish : https://www.varnish-software.com/ref...media/facebook
Needle in a haystack : efficient storage of billions of photos : http://www.facebook.com/note.php?note_id=76191543919
Scaling the Messages Application Back End : http://www.facebook.com/note.php?not...50148835363920
The Underlying Technology of Messages : https://www.facebook.com/note.php?note_id=454991608919
The Underlying Technology of Messages Tech Talk : http://www.facebook.com/video/video.php?v=690851516105
Facebook's typeahead search architecture : http://www.facebook.com/video/video.php?v=432864835468
Facebook Chat : http://www.facebook.com/note.php?note_id=14218138919
Open Compute Project : http://www.facebook.com/note.php?not...50144039563920
Open Compute Project official : http://opencompute.org/
FaceBook real time analytics system 2011 : http://ht.ly/8OGHD
Data Warehousing and Analytics Infrastructure at Facebook : http://borthakur.com/ftp/sigmodwarehouse2010.pdf
Apache Hadoop Goes Realtime at Facebook : http://borthakur.com/ftp/RealtimeHadoopSigmod2011.pdf
Scalable Memory Allocation using jemalloc : http://www.facebook.com/notes/facebo...c/480222803919
Tornado web framework : https://github.com/facebook/tornado
src:michael figuiere
Commentaire