Build a high-throughput TCP server that handles thousands of simultaneous client connections without one thread per connection.
Add non-blocking HTTP request handling to a C++ service that needs to respond to many web clients at once.
Connect a C++ backend service to a Memcached cache cluster using the bundled evmc client library.
Integrate an NSQ message queue consumer into a C++ microservice using the evnsq companion client.
| qihoo360/evpp | introlab/rtabmap | abcz316/skroot-linuxkernelroot | |
|---|---|---|---|
| Stars | 3,767 | 3,768 | 3,765 |
| Language | C++ | C++ | C++ |
| Setup difficulty | moderate | hard | hard |
| Complexity | 4/5 | 4/5 | 5/5 |
| Audience | developer | researcher | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires libevent and a C++11-capable compiler, builds on Linux, BSD, macOS, and Windows with CMake.
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.
evpp is a high-performance C++ library for building network servers and clients that handle many simultaneous connections efficiently. It supports TCP, UDP, and HTTP and includes ready-made clients for Memcached and NSQ message queues.
Mainly C++. The stack also includes C++, libevent, C++11.
Use, modify, and distribute freely for any purpose including commercial use, as long as you keep the copyright and license notice. BSD 3-Clause license.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.