Facebook открыл код Proxygen, фреймворка для создания HTTP-серверов

Facebook объявил об открытии исходных текстов проекта Proxygen, в рамках которого подготовлена коллекция С++ библиотек, используемых для создания высокопроизводительных серверных и клиентских приложений, работающих по протоколу HTTP. В состав также входит простая реализация HTTP-сервера с поддержкой протоколов HTTP/1.1, SPDY/3, SPDY/3.1, TLS и частично HTTP/2 (в разработке). При обработке соединений применяются неблокирующие операции ввода/вывода и вызов epoll. Код Proxygen распространяется под лицензией BSD.

Proxygen не претендует на роль замены Apache httpd и nginx, а сфокусирован на развитии фреймворка, обладающего разумными настройками по умолчанию и подходящего для простой интеграции функцуий работы в роли HTTP-сервера или клиента в уже существующие приложения на языке C++. Proxygen позволяет превращать уже существующие приложения в самостоятельные http-сервисы. Изначально Proxygen был создан как высокопроизводительных HTTP/HTTPS-прокси для балансировки соединений, но позднее перерос в универсальный фреймворк c реализацией простого HTTP-стека. Библиотека отлично протестирована и уже помогла обработать в Facebook многие триллионы соединений.

Библиотека предлагает четыре уровня абстракции: сеанс, кодек, транзакцию и обработчик. Основным высокоуровневым элементом библиотеки является объект HTTPSession, определяющий сеанс соединения. За каждым сеансом закрепляется кодек (HTTPCodec), определяющий специфичные для используемого протокола особенности сериализации сообщений. Для каждого запроса и ответа, обработанными внутри сеанса, создаётся объект HTTPTransaction, связанный с отдельным индентификатором. Непосредственно логика обработки запросов определяется через callback-вызовы HTTPTransation::Handler.

Фреймворк обеспечивает достаточно неплохую производительность, например, простой тестовый сервер способен обработать до 300 тысяч запросов в секунду при запуске 8 потоков-обработчиков и до 40 тысяч при одном потоке, при тестировании на системе с CPU Intel Xeon E5-2670 @ 2.60GHz c 16 GiB ОЗУ.



Источник:
http://www.opennet.ru/opennews/art.shtml?num=41008

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>