A high-performance non-blocking I/O networking framework for Go, optimized for RPC scenarios.
CloudWeGo Netpoll is a high-performance non-blocking I/O networking framework developed by ByteDance, specifically designed for RPC (Remote Procedure Call) scenarios. It addresses limitations in Go's standard net library by enabling more efficient connection handling and reducing goroutine overhead under high concurrency, making it ideal for microservice architectures.
Go developers building high-performance RPC frameworks, microservices, or networking libraries that require efficient connection pooling and reduced goroutine usage under heavy load.
Developers choose Netpoll over alternatives like evio or gnet because it is specifically optimized for RPC scenarios, offering features like connection liveness checking, zero-copy operations, and resource optimization (goroutine pools, memory reuse) that directly address common RPC performance bottlenecks.
A high-performance non-blocking I/O networking framework focusing on RPC scenarios.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Specifically designed for RPC scenarios, it reduces goroutine overhead and context-switching costs under high concurrency, as evidenced by its integration in production frameworks like Kitex and Hertz.
The IsActive API allows for precise connection liveness checking, enabling more effective pool management than standard net.Conn, which lacks this feature.
LinkBuffer provides nocopy APIs for streaming reads and writes, minimizing memory allocations and improving throughput in data-intensive RPC operations.
Includes gopool for goroutine management and mcache for memory reuse, reducing overhead and improving performance in high-load microservice environments.
Explicitly does not support Windows, restricting deployment to Linux and macOS only, which excludes a significant portion of the developer ecosystem.
Focused solely on RPC use cases, making it less versatile for other networking patterns like streaming, gaming servers, or general-purpose event-driven systems.
Requires building servers with EventLoop and clients with Dialer, which involves a steeper learning curve and more boilerplate code compared to Go's straightforward net package.