evpp
A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols.
evpp is a C++ library for building network servers and clients. It supports three communication protocols: TCP (for persistent connections), UDP (for connectionless messaging), and HTTP (for web-style request-response communication). The library is open source and was created by Qihoo360, a Chinese internet company, to handle their internal needs for building high-throughput network services.
The core design uses an event-driven, non-blocking approach, which means the server can handle many simultaneous connections without creating a separate thread for each one. Instead, threads share an event loop that wakes up and responds only when new data arrives. This pattern is common in high-performance server software because it reduces the overhead of switching between threads constantly.
The library is built on top of libevent, a well-tested event handling library, but replaces libevent's internal memory buffer with its own implementation. According to the project's benchmarks, this change makes evpp 17 to 130 percent faster than libevent in data throughput tests, while performing at a similar level to Boost.Asio (another widely-used C++ networking library).
The project also ships two companion client libraries. The first, evmc, is a non-blocking C++ client for Memcached (a caching system used to speed up web applications). The second, evnsq, is a client for NSQ (a message queue system for passing data between services). Both are reported to be running in production at Qihoo360, handling hundreds of billions of requests and messages per day.
evpp uses C++11 features throughout and runs on Linux, BSD, macOS, and Windows. The library is licensed under the BSD 3-Clause license.