V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
panjf2000
V2EX  ›  分享创造

[开源] gnet: 一个基于事件驱动的轻量级且高性能 Go 网络库

  •  
  •   panjf2000 ·
    panjf2000 · 2019-10-15 11:42:03 +08:00 · 1607 次点击
    这是一个创建于 1648 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Github 主页:

    github.com/panjf2000/gnet

    欢迎 star ~~

    gnet 是一个基于事件驱动的高性能和轻量级网络框架。它直接使用 epoll 和 kqueue 系统调用而非标准 Golang 网络包:net 来构建网络应用,它的工作原理类似两个开源的网络库:netty 和 libuv。

    gnet 的亮点在于它是一个高性能、轻量级、非阻塞的纯 Go 实现的传输层( TCP/UDP/Unix-Socket )网络框架,开发者可以使用 gnet 来实现自己的应用层网络协议,从而构建出自己的应用层网络应用:比如在 gnet 上实现 HTTP 协议就可以创建出一个 HTTP 服务器 或者 Web 开发框架,实现 Redis 协议就可以创建出自己的 Redis 服务器等等。

    gnet 衍生自另一个项目:evio,但性能远胜之。

    功能

    • 高性能的基于多线程 /Go 程模型的 event-loop 事件驱动
    • 内置 Round-Robin 轮询负载均衡算法
    • 内置 goroutine 池,由开源库 ants 提供支持
    • 内置 bytes 内存池,由开源库 pool 提供支持
    • 简洁的 APIs
    • 基于 Ring-Buffer 的高效内存利用
    • 支持多种网络协议:TCP、UDP、Unix Sockets
    • 支持两种事件驱动机制:Linux 里的 epoll 以及 FreeBSD 里的 kqueue
    • 支持异步写操作
    • 灵活的事件定时器
    • SO_REUSEPORT 端口重用
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1464 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:17 · PVG 01:17 · LAX 10:17 · JFK 13:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.