NetpollGo 高性能?I/O 非阻塞網(wǎng)絡(luò)庫
Netpoll 是一款 Go 語言高性能、I/O 非阻塞 (NIO) 網(wǎng)絡(luò)庫,專注于 RPC 場景。
Netpoll 借鑒了 evio 和 netty 的優(yōu)秀設(shè)計,具有出色的性能,更適用于微服務(wù)架構(gòu)。
特性
-
已經(jīng)支持
- LinkBuffer 提供可以流式讀寫的 nocopy API
- gopool 提供高性能的 goroutine 池
- mcache 提供高效的內(nèi)存復(fù)用
-
IsActive支持檢查連接是否存活 -
Dialer支持構(gòu)建 client -
EventLoop支持構(gòu)建 server - 支持 TCP,Unix Domain Socket
- 支持 Linux,Mac OS(操作系統(tǒng))
-
即將開源
- multisyscall 支持批量系統(tǒng)調(diào)用
- io_uring
- Shared Memory IPC
- 串行調(diào)度 I/O,適用于純計算
- 支持 TLS
- 支持 UDP
-
不被支持
- Windows(操作系統(tǒng))
性能
測試環(huán)境
- CPU: Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz, 4 cores
- Memory: 8GB
- OS: Debian 5.4.56.bsk.1-amd64 x86_64 GNU/Linux
- Go: 1.15.4
并發(fā)表現(xiàn) (echo 1KB)
傳輸表現(xiàn) (并發(fā) 100)
測試結(jié)論
相比 net ,Netpoll 延遲約 34%,qps 約 110%(繼續(xù)加壓 net 延遲過高,數(shù)據(jù)失真)
評論
圖片
表情
