MCPcopy Index your code
hub / github.com/cloudwego/netpoll

github.com/cloudwego/netpoll @v0.7.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.7.4 ↗ · + Follow
616 symbols 2,705 edges 69 files 354 documented · 57% 6 cross-repo links updated 10d agov0.7.3 · 2026-06-10★ 4,5892 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CloudWeGo-Netpoll

中文

Release WebSite License Go Report Card OpenIssue ClosedIssue Stars Forks

Introduction

Netpoll is a high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance.

RPC is usually heavy on processing logic and therefore cannot handle I/O serially. But Go's standard library net is designed for blocking I/O APIs, so that the RPC framework can only follow the One Conn One Goroutine design. It will waste a lot of cost for context switching, due to a large number of goroutines under high concurrency. Besides, net.Conn has no API to check Alive, so it is difficult to make an efficient connection pool for RPC framework, because there may be a large number of failed connections in the pool.

On the other hand, the open source community currently lacks Go network libraries that focus on RPC scenarios. Similar repositories such as: evio, gnet, etc., are all focus on scenarios like Redis, HAProxy.

But now, Netpoll was born and solved the above problems. It draws inspiration from the design of evio and netty, has excellent Performance, and is more suitable for microservice architecture. Also Netpoll provides a number of Features, and it is recommended to replace net in some RPC scenarios.

We developed the RPC framework Kitex and HTTP framework Hertz based on Netpoll, both with industry-leading performance.

Examples show how to build RPC client and server using Netpoll.

For more information, please refer to Document.

Features

  • Already

    • LinkBuffer provides nocopy API for streaming reading and writing
    • gopool provides high-performance goroutine pool
    • mcache provides efficient memory reuse
    • IsActive supports checking whether the connection is alive
    • Dialer supports building clients
    • EventLoop supports building a server
    • TCP, Unix Domain Socket
    • Linux, macOS (operating system)
  • Unsupported

    • Windows (operating system)

Performance

Benchmark should meet the requirements of industrial use. In the RPC scenario, concurrency and timeout are necessary support items.

We provide the netpoll-benchmark project to track and compare the performance of Netpoll and other frameworks under different conditions for reference.

More benchmarks reference kitex-benchmark and hertz-benchmark.

Reference

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 331
Function 218
Struct 46
Interface 12
FuncType 6
TypeAlias 3

Languages

Go100%

Modules by API surface

nocopy_linkbuffer.go52 symbols
connection_impl.go46 symbols
nocopy_readwriter.go33 symbols
nocopy.go30 symbols
nocopy_linkbuffer_race.go29 symbols
nocopy_linkbuffer_test.go23 symbols
netpoll_unix_test.go23 symbols
connection_test.go22 symbols
connection_onevent.go17 symbols
connection.go17 symbols
poll_loadbalance.go16 symbols
net_tcpsock.go15 symbols

Dependencies from manifests, versioned

github.com/cloudwego/gopkgv0.1.4 · 1×
golang.org/x/sysv0.30.0 · 1×

For agents

$ claude mcp add netpoll \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page