Архитектура Facebook [закрыт]

Я искал статьи / информацию об архитектуре в Facebook, проблемах и способах их решения. Что они используют и почему они используют. Как они масштабируются и каковы проектные решения для того, что они делают и т. д. Основная основа-учиться. Знание о сайтах, которые обрабатывают такой массовый трафик, дает много указателей для архитекторов и т. д. иметь в виду определенные вещи, при проектировании новых объектов. Я делюсь тем, что нашел.

  1. Facebook Наука И Социальный Граф (Видео)
  2. масштаб в Facebook
  3. Facebook Чат Архитектуры
  4. Блог Facebook
  5. Facebook Кассандра архитектура и дизайн
  6. Инженерные Заметки Facebook
  7. Quora-Facebook Архитектура
  8. Facebook для 600M пользователей
  9. Hadoop и его использование в Facebook
  10. Erlang на Facebook: чат архитектура
  11. Кэширование Производительности Facebook
  12. Архитектура Подключения Facebook

У меня есть еще 2 ссылки, но не могу разместить из-за ограничения на этом сайте. Кроме того, пожалуйста, поделитесь, если у кого-то есть что-то лучше (не должно быть связано только с Facebook).

С.- Я не смог найти хороших мест, чтобы поделиться этим исследованием, поэтому эта инициатива. Надеюсь, это кому-то поможет.

3 ответов


Ну Facebook претерпел много изменений, и он изначально не был разработан, чтобы быть эффективным. Он был разработан, чтобы делать свою работу. Я понятия не имею, как выглядит код, и вы, вероятно, не найдете много информации об этом (по очевидным причинам безопасности и авторского права), но просто взгляните на API. Посмотрите, как часто он меняется и как много из него не работает должным образом, больше или вообще.

Я думаю, что самый большой козырь-это хип-хоп. http://developers.facebook.com/blog/post/358 Вы можете использовать HipHop самостоятельно: http://wiki.github.com/facebook/hiphop-php

но если вы спросите меня, это очень амбициозная и, вероятно, тратить время. Hiphop поддерживает только так много, он не может просто конвертировать все в C++. Так что это нам говорит? Ну, это говорит нам о том, что Facebook не полностью использует язык PHP. Он не использует последний 5.3, и я готов поспорить, что все еще много это совместимый PHP 4. Иначе они не смогли бы использовать хип-хоп. Хип-хоп-хорошая идея и должен расти и расширяться, но в его текущем состоянии это не очень полезно для многих людей, которые создают новые приложения PHP.

есть также PHP для JAVA через такие вещи, как Resin/Quercus. Опять же, он не поддерживает все...

еще одна вещь, чтобы отметить, что если вы используете любой нестандартный модуль PHP, вы не сможете преобразовать этот код в C++ или Java либо. Однако...Давайте посмотрим на модули PHP. Они компилируются на C++. Поэтому, если вы можете создавать PHP-модули, которые делают вещи (например, синтаксический анализ XML и т. д.) тогда вы в основном (минус некоторое взаимодействие) работаете с той же скоростью. Конечно, вы не можете просто сделать PHP-модуль для всех возможных потребностей и всего вашего приложения, потому что вам придется перекомпилировать, и будет намного сложнее кодировать и т. д.


Facebook использует структура лампы. Серверные службы Facebook написаны на различных языках программирования, включая C++, Java, Python и Erlang, и они используются в соответствии с требованиями. С LAMP Facebook использует некоторые технологии, для поддержки большого количества запросов, таких как

  1. memcache для - это система кэширования памяти, которая используется для ускорения динамических веб-сайтов, управляемых базой данных (например, Facebook) путем кэширования данных и объекты в ОЗУ, чтобы сократить время чтения. Memcache является основной формой кэширования Facebook и помогает облегчить нагрузку на базу данных. Наличие системы кэширования позволяет Facebook быть так же быстро, как при вызове ваших данных.

  2. бережливость (протокол) - это легкая платформа удаленного вызова процедур для масштабируемой разработки кросс-языковых служб. Бережливость поддерживает C++, PHP, Python, Perl, Java, Ruby, Erlang и другие.

  3. Кассандра (база данных) - это система управления базами данных предназначены для обработки больших объемов данных распределены по многим серверам.

  4. хип-хоп для PHP - это преобразователь исходного кода для кода скрипта PHP и был создан для сохранения ресурсов сервера. HipHop преобразует исходный код PHP в оптимизированный C++. После этого он использует g++ для компиляции на компьютере код.

Если вдаваться в подробности, то ответ на этот вопрос идти дольше. Мы можем понять больше из следующих сообщений:

  1. Как Работает Facebook?
  2. управление данными, Facebook-стиле
  3. дизайн базы данных Facebook?
  4. структура базы данных Facebook wall
  5. Facebook ", как" данные структура

" знание о сайтах, которые обрабатывают такой массовый трафик дает много указатели для архитекторов etc. хранить в виду некоторых вещей при проектировании новые сайты"

Я думаю, что вы, вероятно, можете многому научиться из дизайна Facebook, так же, как вы можете из дизайна любой успешной большой программной системы. Однако мне кажется, что вы должны ... --5-->не имейте в виду текущий дизайн Facebook при разработке новых системный.

почему вы хотите иметь возможность обрабатывать трафик, который Facebook должен обрабатывать? Скорее всего, вам никогда не придется, каким бы талантливым программистом вы ни были. Сам Facebook не был разработан с самого начала для такой масштабируемости, что, возможно, является самым важным уроком, который можно извлечь из него.

Если вы хотите узнать о нетривиальной программной системе, я могу порекомендовать книгу "рассечение приложения на C#" о разработке Интегрированной среды разработки SharpDevelop. Он вышел из печати, но это доступно бесплатно онлайн. Книга дает вам представление о реальном приложении и дает представление об IDEs, которые полезны для программиста.