Facebook has released a collection of open-source code libraries that should ease the process of getting C++ programs to communicate over the Internet
“We’re hoping it will make it easier for people to build applications that need to provide services with HTTP,” said Facebook engineering director Blake Matheny, referring to the protocol that serves as the basis for most Web data communications. “The libraries will make it easier for people to use HTTP as a base transport.”
The library, called Proxygen, could also help Internet-facing organizations prepare for the next-generation Internet data communications protocol, HTTP/2.
“Even if they are not using C++, anybody who is following modern protocol development like HTTP/2, we are hoping they could look at Proxygen as a reference design,” Matheny said.
C++ programs most often use external Web server modules, such as CGI (Common Gateway Interface), to supply a connection to the network, which can be cumbersome and slow to set up and run. Proxygen, which rhymes with oxygen, comes with server software and full HTTP stack, allowing the C++ program to communicate in HTTP internally.
“Instead of calling your application via CGI, you can stand up a Proxygen-based server that can call directly into your application. You can do that within a few lines of code,” Matheny said.
Although Proxygen does not yet support HTTP/2, it does support SPDY/3 and SPDY/3.1, which served as the basis for HTTP/2. SPDY—shorthand for “speedy”—is an augmentation to HTTP developed by Google for speeding Web communications.
“As we work on modern protocols like SPDY or HTTP/2, Proxygen will make adoption of those protocols easier for people,” Matheny said.
HTTP/2 is undergoing interoperability tests. Facebook hopes to add HTTP/2 support to Proxygen soon, perhaps by the end of this year.
Facebook started the Proxygen project in 2011 to create a high-performance reverse-proxy load balancer. The libraries have been battle tested in Facebook’s operation and are a core component of the company’s Web stack, fielding trillions of HTTP requests.
In one internal test, Facebook showed how a single 32-core server could field 267,000 HTTP requests per minute, or up to 304,000 SPDY requests per minute.
Proxygen relies on a number of other open-source Facebook libraries, including Folly and Thrift.