netpoll alternatives and similar packages
Based on the "Networking" category.
Alternatively, view netpoll alternatives based on common mentions on social networks and blogs.
-
fasthttp
Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http -
Netmaker
Netmaker makes networks with WireGuard. Netmaker automates fast, secure, and distributed virtual networks. -
gnet
🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go. -
fortio
Fortio load testing library, command line tool, advanced echo server and web UI in go (golang). Allows to specify a set query-per-second load and record latency histograms and other useful stats. -
mqttPaho
The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets. -
nbio
Pure Go 1000k+ connections solution, support tls/http1.x/websocket and basically compatible with net/http, with high-performance and low memory cost, non-blocking, event-driven, easy-to-use. -
gev
🚀Gev is a lightweight, fast non-blocking TCP network library / websocket server based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers. -
gmqtt
Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.x and V5 in golang -
easytcp
:sparkles: :rocket: EasyTCP is a light-weight TCP framework written in Go (Golang), built with message router. EasyTCP helps you build a TCP server easily fast and less painful. -
peerdiscovery
Pure-Go library for cross-platform local peer discovery using UDP multicast :woman: :repeat: :woman: -
raw
DISCONTINUED. Package raw enables reading and writing data at the device driver level for a network interface. MIT Licensed. -
ethernet
Package ethernet implements marshaling and unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags. MIT Licensed. -
buffstreams
A library to simplify writing applications using TCP sockets to stream protobuff messages
SaaSHub - Software Alternatives and Reviews
Do you think we are missing an alternative of netpoll or a related project?
Popular Comparisons
README
CloudWeGo-Netpoll
[ä¸æ–‡](README_CN.md)
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][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 aliveDialer
supports building clientsEventLoop
supports building a server- TCP, Unix Domain Socket
- Linux, macOS (operating system)
Future
- multisyscall supports batch system calls
- io_uring
- Shared Memory IPC
- Serial scheduling I/O, suitable for pure computing
- TLS
- UDP
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
- Official Website
- [Getting Started](docs/guide/guide_en.md)
- [Design](docs/reference/design_en.md)
- [Why DATA RACE](docs/reference/explain.md)
*Note that all licence references and agreements mentioned in the netpoll README section above
are relevant to that project's source code only.