Не так давно Facebook объявил про открытие доступа к своему проекту Proxygen. Этот проект включает базовый код на C++ и абстракции HTTP, используемые в Facebook.
Компания открыла лишь малую часть своего кода за последние месяцы, большинство из него ориентировано на мобильных разработчиков. Данный анонс довольно интересен по многим причинам так как будет полезен широкому кругу разработчиков.
С самого начала пути Facebook отмечает, что не пытается с помощью Proxygen заменить популярные HTTP и прокси-серверы, такие как Apache или Nginx. Данные проекты направлены на содание чрезвычайно гибких HTTP серверов, написанных на С++, которые дают хорошую производительность, но обладают невероятным количеством настроек. Вместо этого инженеры Facebook сосредоточились на создании высокопроизводительной HTTP платформы на С++ с оптимально подобранными значениями по умолчанию, которая включает в себя и сервер, и клиентский код. При этом не менее важно, чтобы всё это легко интегрировалось в существующие приложения. Цель состоит в обеспечении простых, производительных и современных HTTP библиотек на C++.
Proxygen позволяет Вам быстро установить управляемый событиями сервер, который может обработать запросы SPDY (протокол прикладного уровня для передачи веб-контента) и HTTP. Очень удобно то, что другие проекты смогут использовать Proxygen как основу для построения собственных веб-серверов.
Одни и те же интерфейсы обработчиков и транзакций используются как для создания, так и для обработки зарпосов. API достаточно обобщён для такой двойственной работы. HTTPSession специализируется немного по-разному в зависимости от того, используете ли Вы подключение для отправки HTTP-запросов или ответа на них.
Proxygen начала свою историю ещё в 2011 году, и тогда проект задумывался для создания настраиваемого обратного проксирующего балансировщика загрузки.
Ниже приведена хронология развития Proxygen:
2011 — Начало разработки Proxygen и начало работ системы с реальным трафиком.
2012 — Добавление поддержки SPDY/2 и запуск первичного общественного тестирования.
2013 — Разработка, тестирование, развертывание SPDY/3, начало разработки SPDY/3.1.
2014 — Завершено развертывание SPDY/3.1, начата разработка HTTP/2.
В то время, как Facebook уходит от использования Apache, nginx или Varnish для обработки HTTP, инженеры утверждают, что создание их собственной платформы позволило компании глубже интегрировать инструменты, связанные с существующей инфраструктурой Facebook. Например, ApacheThrift разработан компанией в качестве масштабируемого кросс-языкового сервиса по разработке.
Учитывая размеры Facebook, команда ищет новые пути масштабирования за пределы существующих решений. Также компания хочет заполучить возможность использовать платформу Proxygen в других инструментах. Haystack, HHVM и балансировщики нагрузки Facebook также используют данную платформу в той или иной форме.
К данному моменту Proxygen уже обработал “много триллионов HTTP (S) и SPDY запросов”, таким образом, это — по настоящему закалённый в боях код.
Данный проект и руководство к нему Вы можете скачать здесь.
Автор: IvanGalavachov