Facebook представила новую PHP-платформу HipHopИсточник: cybersecurity
Социальная сеть Facebook, как и ожидалось, представила новую программную платформу HipHop, способную значительно ускорить работу популярного языка веб-разработки PHP. В Facebook говорят, что функционал PHP в последние годы стал одной из самых сильных сторон этого языка, но вот такой важный параметр, как производительность отошел на второй план. Администрация социальной сети говорит, что в собственных проектах применяет PHP, потому заинтересована в развитии этого направления. Около года назад в составе инженерной команды Facebook была выделена группа, которая отвечала за разработку систем, повышающих быстродействие этого языка, а также за его возможности связанные с масштабированием и обработкой очень больших массивов данных. По словам независимых экспертов, социальная сеть Twitter делает ставку на язык программирования Ruby, где также есть некоторые проблемы с производительностью и масштабируемостью, и Twitter уже ощутила это. Хайпин Чжао, инженер по разработке HipHop говорит, что все скриптовые языки, к коим относится и PHP, и Ruby и Python и другие, значительно менее эффективны, чем бинарные, такие как С или C++, когда дело доходит до непосредственной работы компилятора и связки "процессор-память" на сервере. На сравнительно небольших проектах такая разница может быть незаметной, но вот когда проекту, такому как Facebook, приходится генерировать до 400 млрд страниц в месяц, это становится важным. "Пока PHP был популярен из-за своей относительной простоты. Его легко изучать, на нем легко писать и просто отлаживать код. Нам удалось сделать также многое и для ускорения работы этого популярного в интернете веб-языка", - говорит Чжао. По его словам, всего команда разработчиков трудилась над производительностью PHP в том или ином виде почти два года. Сейчас компания рада представить платформу HipHop которая позволит снять с процессора дополнительную нагрузку, освободить память и повысить скорость выполнения скрипов. "HipHop с технической точки зрения не является компилятором как таковым. Это, скорее, источник трансформации кода. HipHop программными методами трансформирует ваш код PHP в оптимизированный C++ и использует открытый компилятор G++ для его сборки. HipHop использует исходный код в той же семантической манере, что и C++", - говорит Чжао. Новая среда выполнения PHP также изменяет работу и многих расширений PHP, чтобы и те могли использовать преимущества платформы. Вторым важным моментов разработки стала проблема масштабирования PHP. "Перед нами стояла задача трансформировать язык так, чтобы он мог отвечать потребностям и масштабам Facebook", - говорит Чжао. В плане масштабирования инженерам Facebook также удалось достичь определенных результатов. Чжао говорит, что нынешние версии PHP устроены таким образом, что практически для каждого посетителя проекта компилятор открывает новую сессию на сервере. В случае с социальными сетями эта проблема становится довольно серьезной, учитывая объемы пользовательской базы и связи "многие-к-многим", поставленной в основу социальных сетей. Чжао говорит, что когда сотни тысяч пользователей одновременно начинают сами заходить в сети, открывать соединения с друзьями, те с другими и т.д., то количество работающих сессий на сервере может исчисляться миллионами. Для того, чтобы как-то сократить количество сессий в Facebook воспользовались подходами, реализованными в таких языках, как C++, Erlang и Java, где в рамках одной сессии можно создать множество потоков данных. "Изначально нам предложили эту идею на конференции Facebook Hackathon, позже такие механизмы были трансформированы в C++ и PHP", - рассказал Чжао. "В общем, можно сказать, что HipHop поможет нам сохранить все преимущества PHP, тогда как скорость работы сравнять со скоростью работы C++. Всего нами в рамках этого проекта было написано более 300 000 строк кода и проведено более 5000 тестов", - резюмирует он. Публичная демонстрация HipHop состоится на ближайших OpenSource-конференциях FOSDEM (Free and Open Source Developers' European Meeting) and OSCON (O'Reilly Open Source Convention). |