gnet 是什么?
gnet
是一个基于事件驱动的高性能且轻量级的网络框架。它直接使用 epoll 和 kqueue 系统调用而非标准 Golang 网络包:net 来构建网络应用,它的工作原理类似两个开源的网络库:netty 和 libuv。
gnet
设计开发的初衷不是为了取代 Go 的标准网络库:net,而是为了创造出一个类似于 Redis、Haproxy 能高效处理网络包的 Go 语言网络服务器框架。
gnet
的亮点在于它是一个高性能、轻量级、非阻塞的纯 Go 实现的传输层(TCP/UDP/Unix Domain Socket)网络框架,开发者可以使用 gnet
来实现自己的应用层网络协议(HTTP、RPC、Redis、WebSocket 等等),从而构建出自己的应用层网络应用:比如在 gnet
上实现 HTTP 协议就可以创建出一个 HTTP 服务器 或者 Web 开发框架,实现 Redis 协议就可以创建出自己的 Redis 服务器等等。
开源地址:https://github.com/panjf2000/gnet
v1.0.0 正式版本
从 2019 年 9 月份开放源码到 GitHub,经过半年多的新功能开发、bug 修复、架构设计重构以及性能优化,Go 语言网络框架 gnet
现在终于发布了第一个正式的 v1 稳定版本!具体的 release 列表可以到 https://github.com/panjf2000/gnet/releases 查看。往后还会持续不断地进行开发、修复、优化甚至重构,如果 gnet
的用户在使用的过程中发现 bug,随时到 gnet
的 Github Issue 页 给我提 issue。
目前,gnet
具备了如下的功能特性:
- 高性能 的基于多线程/Go 程网络模型的 event-loop 事件驱动