The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

05.11.2014 22:47

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/HTTPS-прокси для балансировки соединений, но позднее перерос в универсальный фреймворк c реализацией простого HTTP-стека, позволяющий превращать уже существующие приложения в самостоятельные http-сервисы.

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

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



  1. Главная ссылка к новости (https://code.facebook.com/post...)
  2. OpenNews: Facebook открыл код C++ библиотеки Folly
  3. OpenNews: Facebook выпустила исходные коды части серверного ПО
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41008-http
Ключевые слова: http, proxygen
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (37) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Crazy Alex (ok), 23:18, 05/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отлично. Вот как-то так и надо.
     
  • 1.2, Аноним (-), 23:21, 05/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Note that currently this project has only been tested on Ubuntu 14.04
    ...
    The library has been battle-tested with many, many trillions of HTTP(S) and SPDY requests.

    Делаем вывод, что в серверной инфраструктуре Facebook используется Ubuntu. Вот вам и недоверие к Ubuntu как к серверному дистрибутиву.

     
     
  • 2.3, Аноним (-), 23:32, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Чьё недоверие?
     
     
  • 3.6, Аноним (-), 23:41, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Чьё недоверие?

    Анонимусов.

     
  • 3.13, Аноним (-), 07:02, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну как, всяких "профессионалов" типа тигаров из захолустных дешевых хостеров с их бздами.
     
     
  • 4.23, YetAnotherOnanym (ok), 11:03, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > захолустных дешевых хостеров

    Дороговизна и размещение серверов и офиса в Дефолт-Сити - основополагающие достоинства приличного хостера, да.

     
  • 2.5, Stax (ok), 23:41, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Где вы эти строки про ubuntu вообще нашли? Из головы взято?
     
     
  • 3.7, JerryBruckheimer (ok), 23:54, 05/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Эти строки в секции "Installing" опубликованы. (репозиторий на гитхаб: https://github.com/facebook/proxygen)
     
  • 2.10, YetAnotherOnanym (ok), 01:56, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > в серверной инфраструктуре Facebook используется Ubuntu.

    Всё правильно. Сам Facebook написан на PHP, на серверах - Ubuntu.

     
     
  • 3.11, Anonim (??), 02:58, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Не Ubuntu. Далеко не Ubuntu.
     
     
  • 4.15, Аноним (-), 07:04, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Не Ubuntu. Далеко не Ubuntu.

    Сейчас нам задвинут про QNX, не иначе. А у опача вот тут как-то сервак ошибкой на кривой урле икнул. Оно бы может и не заслуживало бы внимания. Если б не баннер с указанием убунты. Послали опачисты бзды в пень...

     
     
  • 5.24, Аноним (-), 17:42, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Клей нюхать - не модно и не моложёжно! Переходи уже на синтетику.
     
  • 2.29, Аноним (-), 22:40, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Чёрным по белому "tested" написано, троль. Про сервера фейса и слова нет.
     

  • 1.8, Аноним (-), 00:58, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > и вызов epoll. Код Proxygen распространяется под лицензией BSD.

    А смысл в BSDL?

     
     
  • 2.9, YetAnotherOnanym (ok), 01:48, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А какой Ваш вариант?
     
  • 2.14, Аноним (-), 07:02, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А смысл в BSDL?

    Ну как, чтобы вы могли бесплатно попахать на фэйсбук :).

     
     
  • 3.17, Аноним (-), 08:11, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    или могли использовать у себя без проблем, свойственным GPL. как там уже gcc поживает - не забывают добавить исключения в каждую версию? а то забудут и окажется что программа уже как бы и не ваша..
     
     
  • 4.25, Аноним (-), 18:08, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Враньё
     
     
  • 5.26, XoRe (ok), 19:05, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Авторитетно
     
     
  • 6.28, Аноним (-), 20:11, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо, я старался.
     
  • 4.34, Аноним (-), 09:27, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > использовать у себя без проблем, свойственным GPL

    Ну-ка, ну-ка, подробнее? Какие-такие проблемы свойственны gpl?

     

  • 1.16, Аноним (-), 07:44, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Одобрение. Все надо писать на C. http://www.webtoolkit.eu/wt
     
     
  • 2.18, Аноним (-), 08:29, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Для начала научись правильно писать название языка
     
     
  • 3.32, упмем (?), 04:10, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Для начала научись правильно писать название языка

    Это вы про Ц што ле?

     
  • 2.20, Zontus (?), 10:21, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Дай мне это развидеть:

    source

    #include <Wt/WLineEdit>
    #include <Wt/WPushButton>
    #include <Wt/WTemplate>

    Wt::WTemplate *t = new Wt::WTemplate(Wt::WString::tr("WTemplate-example"));

    t->bindWidget("name-edit", new Wt::WLineEdit());
    t->bindWidget("save-button", new Wt::WPushButton("Save"));
    t->bindWidget("cancel-button", new Wt::WPushButton("Cancel"));

     
     
  • 3.22, Аноним (-), 10:31, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    c++11 ад
     
     
  • 4.33, Аноним (-), 07:57, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Казалось бы, при чём здесь C++11?
     
  • 2.27, Аноним (-), 19:40, 06/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ты вообще этим пользовался?
    Тулкит нормальный, но с дубовым набором виджетов. Его основной юзкейс и по совместимости предел - Web UI для крестовых приложений.
     

  • 1.19, пургенту (?), 09:21, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Чем это изделие лучше, чем libuv в связке с http-parser?
     
  • 1.21, Аноним (-), 10:29, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    теперь node js ненужен?
     
  • 1.30, Аноним (-), 23:01, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    You will need at least 2 GiB of memory to compile proxygen and its dependencies
     
  • 1.31, Аноним (-), 23:01, 06/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    "при тестировании на системе с CPU Intel Xeon E5-2670 @ 2.60GHz c 16 GiB ОЗУ"
    А на десктопе сколько? А то ксеоны дорогие очень.
     
     
  • 2.35, Аноним (-), 16:14, 07/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >А на десктопе сколько?

    Для обработки 300к соединений? 8ядерный amd fx-8350 потянет. Главное сетвушки подобрать норм

     

  • 1.37, Аноним (-), 22:25, 08/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    где поддержка websockets, [сenzored]ь !! почему только ..ие костыли вроде SPDY и прочего уг мамонта ? когда уже слоупоков из девелоперов компаний fortune 500 - выпилят ?
     
  • 1.38, Аноним (-), 09:45, 10/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    казалось бы, при чем здесь erlang и его 2.8 млн коннектов на сервере? правда, памяти хочет 196 гигов :)

     
  • 1.39, Аноним (-), 23:21, 12/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    что -то жирный сервер у них, 16G RAM вы не находите ?
     
  • 1.40, Аноним (-), 23:23, 12/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    с sandbox -ом что случилось ?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру