NetpollGo 高性能 I/O 非阻塞网络库

联合创作 · 2023-09-29 12:11

Netpoll 是一款 Go 语言高性能、I/O 非阻塞 (NIO) 网络库,专注于 RPC 场景。

Netpoll 借鉴了 evio 和 netty 的优秀设计,具有出色的性能,更适用于微服务架构。

特性

  • 已经支持

    • LinkBuffer 提供可以流式读写的 nocopy API
    • gopool 提供高性能的 goroutine 池
    • mcache 提供高效的内存复用
    • IsActive 支持检查连接是否存活
    • Dialer 支持构建 client
    • EventLoop 支持构建 server
    • 支持 TCP,Unix Domain Socket
    • 支持 Linux,Mac OS(操作系统)
  • 即将开源

    • multisyscall 支持批量系统调用
    • io_uring
    • Shared Memory IPC
    • 串行调度 I/O,适用于纯计算
    • 支持 TLS
    • 支持 UDP
  • 不被支持

    • Windows(操作系统)

性能

测试环境

  • 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

并发表现 (echo 1KB)

 

传输表现 (并发 100)

 

测试结论

相比 net ,Netpoll 延迟约 34%,qps 约 110%(继续加压 net 延迟过高,数据失真)

浏览 10
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报