Хорошо, что 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 не является отличной идеей в целом и что это не успешный и что вы не должны получать от него идеи ... Я просто говорю, что если бы вы могли просмотреть весь их исходный код, вы, вероятно, не выиграли бы от него.
2. Шкала на Facebook (видео) - HTTP: // WWW .infoq.com/презентации/Scale-at-Facebook 3. Facebook Chat - ht tp: //www.infoq.com/news/2008/05/facebookchatarchitecture –
Также http://highscalability.com/, кажется, отличное место, чтобы узнать об архитектуре для множества популярных сайтов. Не знаю, насколько это справедливо и насколько спекулятивно, но это там и просто что-то, чтобы намазать ... –
[facebook engineering blog] (http://www.facebook.com/notes.php?id= 9445547199) иногда имеет значительное представление об их архитектуре и проблемах масштабирования. –