httprouter与 fasthttp 的性能对比
关于协议:
本打算接入层使用gRPC,虽然基于HTTP 2.0 效率比较高,而且使用protobuf 能进行高效的序列化。但是本次系统需要和
JAVA进行对接,考虑到gRPC对JAVA的支持性不是很好,资源并不多,可能在踩坑上花过多的时间,所以综合考虑还是使用restful 进行对接
后续如果有机会还是会考虑使用gRPC。所以下面对几个go的http框架进行简单的对比
测试工具:
ApacheBench
参数:
ab -n 6000 -c 300 http://url:port
可能机器原因只能给到这么大的参数了
测试环境:
型号:imac macos 10.13
内存:8
cpu核心数:4
为了模拟网络请求处理时间,所以在处理的Handle function 中加入了 time.Sleep(200 *time.Millisecond)
测试对象:
httprouter:本打算使用gin 框架进行测试,但是fasthttp是一个http的包 使用 gin使用的httprouter
进行测试,优势在于实现了restful 风格的地址,使用前缀树实现了路由查找,使用了go 的标准包 http包 开启一个服务
fasthttp:优势在于自己实现了http服务,内部大量的池化,并不是每个请求都和http包一样开启一个goroutine,
同是也使用[]byte 操作去 代替string 操作,减少了内存的分配。