gnet

这个项目存在的价值是提供一个在网络包处理方面能和 Redis、Haproxy 这两个项目具有相近性能的 Go 语言网络服务器框架。

gnetgnetgnet
gnetevio
功能
gnet
核心设计

多线程/Go程网络模型

主从多 Reactors

gnetnetty

它的运行流程如下面的时序图:

主从多 Reactors + 线程/Go程池

EventHandler.React
gnetEventHandler.Reactnetty
gnetEventHandler.React

模型的架构图如下所示:

它的运行流程如下面的时序图:

gnetants
gnetantspool.NewWorkerPoolantsEventHandler.Reactgnet.Conn.AsyncWrite
gnetants

自动扩容的 Ring-Buffer

gnet
gnetgnet
性能测试

同类型的网络库性能对比

Linux (epoll)

系统参数

 # 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

Echo Server

HTTP Server

FreeBSD (kqueue)

系统参数

 # 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

Echo Server

HTTP Server

 

相关文章