同步操作将从 Gitee 极速下载/gnet 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
英文 | 🇨🇳中文
gnet
是一个基于事件驱动的高性能和轻量级网络框架。它直接使用 epoll 和 kqueue 系统调用而非标准 Go 网络包:net 来构建网络应用,它的工作原理类似两个开源的网络库:netty 和 libuv,这也使得 gnet
达到了一个远超 Go net 的性能表现。
gnet
设计开发的初衷不是为了取代 Go 的标准网络库:net,而是为了创造出一个类似于 Redis、Haproxy 能高效处理网络包的 Go 语言网络服务器框架。
gnet
的卖点在于它是一个高性能、轻量级、非阻塞的纯 Go 实现的传输层(TCP/UDP/Unix Domain Socket)网络框架,开发者可以使用 gnet
来实现自己的应用层网络协议(HTTP、RPC、Redis、WebSocket 等等),从而构建出自己的应用层网络应用:比如在 gnet
上实现 HTTP 协议就可以创建出一个 HTTP 服务器 或者 Web 开发框架,实现 Redis 协议就可以创建出自己的 Redis 服务器等等。
gnet
衍生自另一个项目:evio
,但拥有更丰富的功能特性,且性能远胜之。
TCP
、UDP
和 Unix Domain Socket
Round-Robin(轮询)
、Source-Addr-Hash(源地址哈希)
和 Least-Connections(最少连接数)
epoll
以及 FreeBSD/DragonFly/Darwin 里的 kqueue
gnet
客户端# 硬件环境
CPU: 28 HT Cores Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz
Mem: 32GB RAM
OS : Ubuntu 18.04.3 4.15.0-88-generic #88-Ubuntu
Net: Switched 10-gigabit ethernet
Go : go1.14.x linux/amd64
这是包含全部编程语言框架的性能排名前 50 的结果,总榜单包含了全世界共计 422 个框架,其中 gnet
排名第二。
这是 Go 语言分类下的全部排名,gnet
超越了其他所有框架,位列第一,是最快的 Go 网络框架。
完整的排行可以通过 TechEmpower Plaintext Benchmark 查看。
# Machine information
OS : Ubuntu 18.04/x86_64
CPU : 8 Virtual CPUs
Memory : 16.0 GiB
# Go version and configurations
Go Version : go1.12.9 linux/amd64
GOMAXPROCS=8
# Machine information
OS : macOS Mojave 10.14.6/x86_64
CPU : 4 CPUs
Memory : 8.0 GiB
# Go version and configurations
Go Version : go version go1.12.9 darwin/amd64
GOMAXPROCS=4
关于 gnet
的架构设计、使用方法以及其他更多的信息和细节,请访问官网。
gnet
的源码允许用户在遵循 MIT 开源证书 规则的前提下使用。
请在提 PR 之前仔细阅读 Contributing Guidelines,感谢那些为 gnet
贡献过代码的开发者!
欢迎在这里添加你的案例~~
gnet
项目一直以来都是在 JetBrains 公司旗下的 GoLand 集成开发环境中进行开发,基于 free JetBrains Open Source license(s) 正版免费授权,在此表达我的谢意。
如果有意向,可以通过每个月定量的少许捐赠来支持这个项目。
每月定量捐赠 10 刀即可成为本项目的赞助者,届时您的 logo 或者 link 可以展示在本项目的 README 上。
当您通过以下方式进行捐赠时,请务必留下姓名、Github账号或其他社交媒体账号,以便我将其添加到捐赠者名单中,以表谢意。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。