Facebook Architecture [zamknięty]

Szukałam artykułów/informacji o architekturze na Facebook, wyzwaniach i sposobach, w jakie się z nimi zmierz. Czego używają i dlaczego używają. Jak skalują się i jakie są decyzje projektowe dotyczące tego, co robią itp. Głównym fundamentem jest nauka. Wiedza o witrynach, które obsługują tak ogromny ruch daje wiele wskazówek dla architektów itp. aby pamiętać o pewnych rzeczach podczas projektowania nowych stron. Dzielę się tym, co znalazłem.

  1. Facebook Science & Social Graf (Film)
  2. Skaluj na Facebook ' u
  3. Facebook Chat Architecture
  4. Facebook Blog
  5. Facebook Cassandra Architektura i Design
  6. Facebook Engineering Notes
  7. Quora-Facebook Architecture
  8. Facebook dla 600 mln użytkowników
  9. Hadoop i jego zastosowanie w Facebook
  10. Erlang na Facebook: Chat Architecture
  11. Buforowanie Wydajności Facebook
  12. Facebook Connect Architecture

Mam jeszcze 2 Linki, ale nie mogę publikować ze względu na ograniczenia na tej stronie. Również, Proszę podzielić się, jeśli ktoś ma coś lepszego (nie muszą być związane tylko z Facebook).

P. S. - nie byłem w stanie znaleźć dobrych miejsc do dzielenia się tymi badaniami, stąd ta inicjatywa. Mam nadzieję, że to komuś pomoże.

Author: Geert Bellekens, 2010-08-20

3 answers

No cóż Facebook przeszedł wiele zmian i nie był pierwotnie zaprojektowany, aby być wydajnym. Został zaprojektowany, by wykonywać swoją pracę. Nie mam zielonego pojęcia, jak ten kod wygląda i prawdopodobnie nie znajdziesz o nim zbyt wiele informacji( z oczywistych względów bezpieczeństwa i praw autorskich), ale po prostu spójrz na API. Zobacz, jak często się zmienia i jak wiele z nich nie działa prawidłowo, już lub w ogóle.

Myślę, że największym asem w rękawie jest Hiphop. http://developers.facebook.com/blog/post/358 Możesz sam korzystać z hiphopu: http://wiki.github.com/facebook/hiphop-php

Ale moim zdaniem to bardzo ambitne i pewnie marnujące czas zadanie. Hiphop obsługuje tylko tyle, że nie może po prostu przekonwertować wszystkiego do C++. Co nam to mówi? Cóż, mówi nam, że Facebook nie w pełni wykorzystuje język PHP. Nie używa najnowszego 5.3 i jestem skłonny się założyć, że jest jeszcze dużo PHP 4 kompatybilny. Inaczej nie mogliby używać hiphopu. HipHop jest dobrym pomysłem i musi się rozwijać i rozwijać, ale w obecnym stanie nie jest to naprawdę przydatne dla wielu osób, które budują nowe aplikacje PHP.

Istnieje również PHP do Javy za pomocą rzeczy takich jak Resin/Quercus. Ponownie, nie obsługuje wszystkiego...

Kolejną rzeczą, którą należy zauważyć, jest to, że jeśli używasz dowolnego niestandardowego modułu PHP, nie będziesz w stanie przekonwertować tego kodu do C++ lub Javy. Jednak...Przyjrzyjmy się PHP Moduły. Są one skompilowane w C++. Więc jeśli możesz budować moduły PHP, które robią rzeczy (jak parse XML, itp.) wtedy w zasadzie (minus jakaś interakcja) pracujesz z tą samą prędkością. Oczywiście nie możesz po prostu zrobić modułu PHP dla każdej możliwej potrzeby i całej aplikacji, ponieważ musiałbyś przekompilować i byłoby znacznie trudniej kodować itp.

Jednak...Istnieje kilka przydatnych modułów PHP, które mogą pomóc w problemach z prędkością. Choć na koniec dnia, mamy to niesamowite rzecz znana jako "chmura" i dzięki niej możemy skalować nasze aplikacje (w tym PHP), więc nie ma to już większego znaczenia. Sprzęt staje się coraz tańszy. Amazon właśnie obniżył ceny (znowu).

Tak długo, jak kodować aplikację PHP wokół idei, że będzie musiał jeden dzień skali...Wtedy myślę, że jesteś w porządku i nie jestem pewien, czy nawet spojrzę na Facebook i co zrobili, bo kiedy to zrobili, to był zupełnie inny świat i teraz próbuje trzymać się tej infrastruktury i utrzymać ją...Masz takie rzeczy jak HipHop.

Jak HipHop ci pomoże? Zaczynasz od nowa, możesz używać PHP 5.3. Gorąco polecam przyjrzenie się frameworkom PHP 5.3 i wszystkim nowym korzyściom, jakie przynosi PHP 5.3 wraz z bibliotekami SPL, a także pomyśl o swojej bazie danych. Najprawdopodobniej serwujesz treści z bazy danych, więc sprawdź MongoDB i inne typy baz danych, które nie są schematyczne i zorientowane na dokumenty. Są one o wiele szybsze i lepsze dla najbardziej "powszechnego" typu strony internetowej/aplikacji.

Spójrz na nowe firmy, takie jak Foursquare i Smugmug i kilka innych firm, które wykorzystują nowe technologie i jak je wykorzystują. Na tyle udane, jak Facebook jest, szczerze mówiąc, nie spojrzał na nich " jak " zbudować wydajną stronę internetową/aplikację. Nie mówię, że nie mają bardzo (bardzo) utalentowanych ludzi, którzy tam pracują, którzy twórczo rozwiązują (swoje) problemy...Ja też nie. mówiąc, że Facebook nie jest dobrym pomysłem w ogóle i że nie jest udany i że nie powinieneś czerpać z niego pomysłów....Mówię tylko, że gdybyś mógł przejrzeć ich cały kod źródłowy, prawdopodobnie nie skorzystałbyś z niego.

 31
Author: Tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-03 16:56:34

Facebook używa struktury lampy . Usługi zaplecza Facebook są napisane w różnych językach programowania, w tym C++, Java, Python i Erlang i są używane zgodnie z wymaganiami. Z lampą Facebook wykorzystuje pewne technologie, aby obsługiwać dużą liczbę zapytań, takich jak

  1. Memcache - jest to system buforowania pamięci, który jest używany do przyspieszenia dynamicznych stron internetowych opartych na bazie danych (takich jak Facebook) przez buforowanie danych i obiektów w pamięci RAM do skróć czas czytania. Memcache jest podstawową formą buforowania Facebook i pomaga złagodzić obciążenie bazy danych. Posiadanie systemu buforowania pozwala Facebook być tak szybko, jak to jest w Przywołaniu danych.

  2. Thrift (protocol) - jest to lekki, zdalny framework wywołania procedur dla skalowalnego rozwoju usług między językowych. Thrift obsługuje C++, PHP, Python, Perl, Java, Ruby, Erlang i inne.

  3. Cassandra (database) - jest to baza danych system zarządzania zaprojektowany do obsługi dużych ilości danych rozproszonych na wielu serwerach.

  4. HipHop dla PHP - jest to transformator kodu źródłowego dla kodu skryptu PHP i został stworzony w celu oszczędzania zasobów serwera. HipHop przekształca kod źródłowy PHP w zoptymalizowany C++. Po wykonaniu tej czynności używa g++ do kompilacji go do kodu maszynowego.

Jeśli wejdziemy w szczegóły, to odpowiedź na to pytanie będzie dłuższa. Możemy zrozumieć więcej z następujących posty:

  1. Jak Działa Facebook?
  2. zarządzanie danymi, Facebook-style
  3. projektowanie baz danych Facebook?
  4. struktura bazy danych Facebook wall
  5. Struktura danych Facebook "like"
 15
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:19

"Wiedza o witrynach, które obsługują taki ogromny ruch daje dużo wskazówki dla architektów itp. aby zachować mając na uwadze pewne rzeczy podczas projektowania nowe strony "

Myślę, że prawdopodobnie można się wiele nauczyć z projektowania Facebook, tak jak można z projektowania każdego udanego dużego systemu oprogramowania. Wydaje mi się jednak, że nie należy pamiętać o obecnym designie Facebook ' a przy projektowaniu nowych systemów.

Dlaczego chcesz być w stanie aby obsłużyć ruch, który Facebook ma do obsługi? Szanse są takie, że nigdy nie będziesz musiał, bez względu na to, jak utalentowany jesteś programista. Sam Facebook nie został zaprojektowany od samego początku do tak ogromnej skalowalności, która jest prawdopodobnie najważniejszą lekcją, z której można się z niego wyciągnąć.

Jeśli chcesz dowiedzieć się o nietrywialnym systemie oprogramowania, mogę polecić książkę "Dissecting A C# Application" o rozwoju SharpDevelop IDE. Nie jest już drukowana, ale jest dostępna dla free online . Książka daje wgląd w prawdziwą aplikację i zapewnia wgląd w IDE, które są przydatne dla programisty.

 7
Author: Jørgen Fogh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 14:28:24