Proxygen: Facebook veröffentlicht eigenes HTTP-Framework

Proxygen ist eine " Sammlung von C++-HTTP-Bibliotheken, einschließlich eines einfach zu nutzenden HTTP-Servers ", schreibt Facebook in der Ankündigung(öffnet im neuen Fenster) des nun frei verfügbaren Projekts. Neben dem Standard HTTP/1 wird auch das von Google initiierte Protokoll SPDY in den Versionen 3.0 und 3.1 unterstützt. An einer Implementierung von HTTP/2 werde zudem aktiv gearbeitet.
Das Projekt begann als Reverse-Proxy(öffnet im neuen Fenster) -Load-Balancer mit einer besonders hohen Leistung. Von der ursprünglichen Fokussierung auf Proxy-Server rührt auch der Name. Proxygen entwickelte sich aber schnell weiter und der Code ist sehr stark in die bestehende Infrastruktur von Facebook integriert worden wie eben die Load-Balancer oder auch die Werkzeuge zur Netzwerküberwachung.
Viele Bestandteile des Codes werden auch von Facebook intern weiterverwendet, etwa für die mobile Infrastruktur oder auch für HHVM und Haystack . Darüber hinaus skaliert der Code besonders gut und die Eigenentwicklung erlaubt die notwendige Flexibilität, um Funktionen wie SPDY, Websockets, HTTP-Keepalive(öffnet im neuen Fenster) oder eigene Algorithmen schnell umzusetzen.
Genau diese Möglichkeiten sorgen aber auch dafür, dass Proxygen bekannte HTTP-Server wie Apache oder Nginx wohl nicht ersetzen kann, was es laut Facebook auch gar nicht soll. Während die beiden großen Serverprojekte ein sehr hohes Maß an Konfigurierbarkeit aufweisen, bietet das Framework von Facebook " vernünftige Standardeinstellungen " und sei vergleichsweise einfach in bestehen Anwendungen einzupflegen oder eben als Basis für neue Projekte zu verwenden.
Proxygen baut auf den ebenfalls von Facebook erstellten C++-Bibliotheken Thrift(öffnet im neuen Fenster) und Folly(öffnet im neuen Fenster) auf und verwendet unter anderem den Linux-Systemaufruf Epoll(öffnet im neuen Fenster) , um eine größere Effizienz zu erreichen. Details zur Architektur und eine Einführung in die Benutzung bietet die Github-Seite des Projekts(öffnet im neuen Fenster) , auf der der Code unter einer BSD-Lizenz zum Download zur Verfügung steht.