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 延迟过高,数据失真)

浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

编辑 分享
举报