Build a high-throughput Go RPC server that handles thousands of simultaneous connections without wasting memory on idle goroutines.
Replace Go's standard net package in a latency-sensitive microservice to reduce goroutine-switching overhead under heavy load.
Use Netpoll as the networking layer when building your own RPC or HTTP framework in Go.
| cloudwego/netpoll | douyu/jupiter | charmbracelet/freeze | |
|---|---|---|---|
| Stars | 4,563 | 4,563 | 4,557 |
| Language | Go | Go | Go |
| Setup difficulty | hard | moderate | easy |
| Complexity | 4/5 | 4/5 | 1/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Linux or macOS only, Windows is not supported. Best used as a foundation for a larger framework rather than as a standalone network library.
Netpoll is a Go networking library built by ByteDance, the company behind TikTok, specifically for handling the kind of high-volume internal communication that happens between services in large software systems. That communication pattern, where many services constantly send small requests to each other, is called RPC (remote procedure call), and it has specific performance requirements that Go's built-in networking tools are not well suited for. The core problem is that Go's standard networking library is designed around a model where each connection ties up a thread-like structure called a goroutine while it waits for data. Under high load, this means thousands or millions of goroutines sitting idle waiting, which wastes memory and processing time just switching between them. Netpoll takes a different approach: it handles many connections without dedicating a goroutine to each one, using an event-driven model where the system only acts when data actually arrives. This approach borrows design ideas from similar tools in other languages, notably Netty from the Java world and evio from Go. Netpoll adds features that are specifically useful for RPC workloads: a way to read and write data without copying it in memory, a pool of goroutines that can be reused instead of created fresh for each task, and a way to check whether a connection is still alive before using it. Netpoll is the foundation for two other ByteDance open-source projects: Kitex, an RPC framework, and Hertz, an HTTP framework. Both use Netpoll as their networking layer and are described as having industry-leading performance benchmarks. The library runs on Linux and macOS. Windows is not supported. The README links to benchmark projects and design documentation for readers who want to go deeper.
A high-performance Go networking library from ByteDance that handles thousands of simultaneous connections using an event-driven model instead of a goroutine-per-connection, built as the networking foundation for the Kitex RPC and Hertz HTTP frameworks.
Mainly Go. The stack also includes Go.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.