快捷搜索:  汽车  科技

nginx基本配置:爱上开源之boot4go-gateway和nginx的性能测试大PK

nginx基本配置:爱上开源之boot4go-gateway和nginx的性能测试大PK场景2: 中型文件 index-m.html 20KB文件大小, html文件场景1: 默认文件,index.html 45KB文件大小, html文件第一版本测试试,还没有非常全面的进行测试,分别使用Nginx和Boot4go-gateway作为前端的反向代理,代理的目标机器是nginx的两台http服务器,测试场景中的返回数据使用了4中场景的数据包。

为什么进行PK

boot4go-gateway开源项目,是一个golang实现的高性能的gateway功能的项目, 在springcloud的项目里都是使用springcloud-gateway作为gateway的服务组件,springcloud虽然后面使用webflux实现了所有的gateway功能,提供springcloud环境里的API反向代理的功能,在性能能有了不错的提升,但是和nginx比较起来,毕竟是java系列的,即使使用netty作为底层通信的服务,但是在性能上和nginx还是差距了很大, 这个在以前的springcloud项目里,我已经做过测试和比较,但是在springcloud在中国目前中小公司的流行程度,还是很多公司在使用,springcloud我个人的感觉,由于其先天的java血统,对springcloud系列的组件支持很方便,但是对其他的云环境就不能支持,所以在未来的云原生的环境下,由于其不是特别优秀的性能,必须要做出一定的转变,否则,范围会跃龙越窄。

boot4go-gateway是用springcloud-gateway的功能方式以golang实现的一个组件,功能上对等springcloud-gateway,集成的服务治理上目前仅支持etcd,nacos,zookeeper,zulu版本后期看情况是否继续支持,既然这个产品是为云原生诞生的,那么nacos,zookeeper这样云原生的非热门产品是否支持还在考虑中,主要是以etcd系列为主了。

在项目放到github上之初,就有朋友关注了,提出意见,既然作为初衷,那么这个产品的性能必须要可nginx进行一下比较, 简单的通过页面访问进行过简单的感觉,不比nginx差,但是作为服务端产品,在多并发的情况下,进行压力和性能负载测试,才能更客观的进行两者性能的比较。

PK的环境

所以先通过jmeter进行了简单的并发和压力测试,jmeter单机,本版本测试没有部署多台jmeter进行测试,毕竟是第一轮,先简单的比较下,有意义再模拟更多的场景,所以只规划准备一单节点的jmeter进行压力测试

第一版本测试试,还没有非常全面的进行测试,

场景如下:

分别使用Nginx和Boot4go-gateway作为前端的反向代理,代理的目标机器是nginx的两台http服务器,

测试场景中的返回数据使用了4中场景的数据包。

场景1: 默认文件,index.html 45KB文件大小, html文件

场景2: 中型文件 index-m.html 20KB文件大小, html文件

场景3: 小型文件 index-s.html 5KB文件大小,html文件

场景4: 超小型文件 index-xs.html 1KB文件大小,html文件

环境均搭建在同一个开发机器的虚拟机上的不同的docker容器里。 由于gateway使用了etcd作为数据存储,还有一个3个节点etcd集群作为gateway的服务治理端,

Nginx均使用官方的latest作为镜像, boot4go-gateway是golang实现,直接dockerfile制作成本地镜像进行容器的部署, etcd使用3.5.1的官方镜像, 三节点都是3.5.1的版本, 数据大小为100M左右

nginx基本配置:爱上开源之boot4go-gateway和nginx的性能测试大PK(1)

nginx基本配置:爱上开源之boot4go-gateway和nginx的性能测试大PK(2)

压测策略

环境都是安装在自己的笔记本上的, 没有压太多量,最大600的并发数, 持续加压的策略。

nginx基本配置:爱上开源之boot4go-gateway和nginx的性能测试大PK(3)

nginx基本配置:爱上开源之boot4go-gateway和nginx的性能测试大PK(4)

测试环境

作为gateway的nginx配置,

upstream gateway { server 192.168.56.101:10081; server 192.168.56.101:10082; } location / { # root /usr/share/nginx/html; # index index.html index.htm; proxy_pass http://gateway; }

可以看到是最简单的场景,作为gateway的nginx的开发端口是10080,访问的地址

http://192.168.56.101:10080 反向代理到后面的 192.168.56.101:10081 和192.168.56.101:10082

nginx基本配置:爱上开源之boot4go-gateway和nginx的性能测试大PK(5)

猜您喜欢: