2010-08-20 2 views
152

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

  1. Facebook Science & Social Graph (Video)
  2. Scale at Facebook
  3. Facebook Chat Architecture
  4. Facebook Blog
  5. Facebook Cassandra Architecture and Design
  6. Facebook Engineering Notes
  7. Quora - Facebook Architecture
  8. Facebook for 600M users
  9. Hadoop & its usage at Facebook
  10. Erlang at Facebook: Chat Architecture
  11. Facebook Performance Caching
  12. Facebook Connect Architecture

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

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

+2

2. Шкала на Facebook (видео) - HTTP: // WWW .infoq.com/презентации/Scale-at-Facebook 3. Facebook Chat - ht tp: //www.infoq.com/news/2008/05/facebookchatarchitecture –

+2

Также http://highscalability.com/, кажется, отличное место, чтобы узнать об архитектуре для множества популярных сайтов. Не знаю, насколько это справедливо и насколько спекулятивно, но это там и просто что-то, чтобы намазать ... –

+1

[facebook engineering blog] (http://www.facebook.com/notes.php?id= 9445547199) иногда имеет значительное представление об их архитектуре и проблемах масштабирования. –

ответ

31

Хорошо, что 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. В противном случае они не могли использовать HipHop. HipHop IS GOOD ИДЕА и должен расти и расширяться, но в текущем состоянии это не очень полезно для многих людей, которые строят новые приложения PHP.

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

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

Однако ... Есть некоторые полезные PHP модули, которые могут помочь с проблемами скорости. Хотя в конце дня у нас есть эта удивительная вещь, известная как «облако», и вместе с ней мы можем масштабировать наши приложения (включая PHP), поэтому это уже не имеет значения. Оборудование становится дешевле и дешевле. Амазонка просто понизила цены (снова).

До тех пор, пока вы кодируете свое приложение PHP вокруг идеи о том, что ему понадобится однодневный масштаб ... Тогда я думаю, что все в порядке, и я не уверен, что даже посмотрю на Facebook и что они сделали это, потому что, когда они это сделали, это был совершенно другой мир и теперь пытается удержать эту инфраструктуру и поддерживать ее ... Ну, вы получаете такие вещи, как HipHop.

Теперь, как HipHop собирается вам помочь? Это не так. Это невозможно. Вы начинаете новый, вы можете использовать PHP 5.3. Я настоятельно рекомендую изучить фреймворки PHP 5.3 и все новые преимущества, которые PHP 5.3 приносит в таблицу вместе с библиотеками SPL, а также задумываются о вашей базе данных. Скорее всего, вы обслуживаете контент из базы данных, поэтому ознакомьтесь с MongoDB и другими типами баз данных, которые не имеют схемы и документально ориентированы. Они намного быстрее и лучше для самого «общего» типа веб-сайта/приложения.

Посмотрите на новые компании, такие как Foursquare и Smugmug и некоторые другие компании, которые используют НОВЫЕ технологии и КАК они используют его. Насколько успешным, как Facebook, я честно не смотрю на них, чтобы «как» создать эффективный веб-сайт/приложение. Я не говорю, что у них нет очень (очень) талантливых людей, которые там работают, которые решают (их) проблемы творчески ... Я также не говорю, что Facebook не является отличной идеей в целом и что это не успешный и что вы не должны получать от него идеи ... Я просто говорю, что если бы вы могли просмотреть весь их исходный код, вы, вероятно, не выиграли бы от него.

+1

согласился с большей частью того, что вы сказали. Эти ссылки предназначены только ради любопытства. Иногда вы смотрите на технологию и говорите «эй, это круто» ... –

+0

Случайно пересматриваю мой ответ здесь две вещи. # 1, я считаю, что C, а не C++, мой технический плохой ... Но что еще более важно, # 2, Phalcon - это новая фреймворк PHP, которая много конвертирует с расширением PHP для скорости. Хотя большая часть вашего собственного кода не будет работать на языке C, и любая другая библиотека, которую вы используете, тоже не будет. Тем не менее, это хитроумная идея, такая же, как HipHop, чтобы выжать дополнительную производительность. – Tom

+0

... и здесь мы снова идем с тузом в рукаве. Оглядываясь назад, у нас есть этот язык Hack (рожденный из материала HipHop с его собственной IDE не менее). Разве это стало чем-то лучше? Посмотрим. Может это вам помочь?Может быть, но теперь похоже, что вы тоже сможете строить так же, как Facebook. Это заняло около 4 лет =) Хотя лично я бы не стал так быстро пить кул-помощь. – Tom

6

«Зная о сайтах, которые обрабатывает такие массовые движения дает много указателей для архитекторов и т.д., чтобы сохранить в виду определенные вещи при проектировании новых сайтов»

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

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

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

+1

да, возможно, не так много людей вообще должны иметь дело с таким интенсивным движением. но всегда хорошо понимать масштабируемость и как отличная компания, такая как Facebook, имеет дело с таким интенсивным трафиком. Могут быть некоторые хорошие конструктивные достоинства можно узнать из :) – trillions

+0

@nanshi: Я согласен, что это полезно узнать. Я хочу сказать, что вы должны помнить о том, для чего вы проектируете. Проектирование для масштабируемости с 1-го дня усложняет работу программы. В большинстве ситуаций более важна простота. Кроме того, Facebook поддерживается многими людьми. Каждый из этих людей должен быть экспертом в части системы. –

+0

Я вижу вашу точку. дать согласие :) – trillions

14

Facebook использует LAMP structure. Внутренние службы Facebook написаны на разных языках программирования, включая C++, Java, Python и Erlang, и они используются в соответствии с требованиями.С СВЕТИЛЬНИКОМ Facebook использует некоторые технологии, чтобы поддерживать большое количество запросов, как

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

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

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

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

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

  1. How Does Facebook Work?
  2. Data Management, Facebook-style
  3. Facebook database design?
  4. Facebook wall's database structure
  5. Facebook "like" data structure
Смежные вопросы