.net core下,Ocelot网关与Spring Cloud Gateway网关的对比测试
有感于 myzony 发布的 针对 Ocelot 网关的性能测试 ,并且公司下一步也需要对.net和java的应用做一定的整合,于是对Ocelot网关、Spring Cloud Gateway网关做个了对比测试,使用了wrk进行测试
.net core + Spring Cloud Gateway 是使用 steeltoe 工具接入注册中心Spring Cloud Eureka,共Spring Cloud Gateway调用
应用服务器环境 windows server 2008 .net core 2.2 java 1.8
172.16.1.65 部署 Ocelot的.net core接口-6002、Spring Cloud Gateway的spring boot接口-9004、Spring Cloud Gateway的.net core接口-9001
172.16.1.68 部署 Ocelot的.net core接口-6004、Spring Cloud Gateway的spring boot接口-9004、Spring Cloud Gateway的.net core接口-9001
172.16.1.120 部署 Ocelot网关-6000、Spring Cloud Eureka注册中心-7000 + Spring Cloud Gateway网关-8000
测试工具 wrk 参数统一为 -t 50 -c 10000 -d 60s --latency --timeout 3s
测试服务器环境 centos 7.5 172.16.1.144,并根据 wrk的报错修改了最大打开文件数限制
测试结果汇总如下图

可以看出Ocelot的总请求数、QPS比Gateway高不少,而且超时数也少,但是平均响应时间要比Gateway高不少。
总体上来说,两者基本上处于同一水平,对于一般的企业业务系统足够了,因为上面的测试的都没有涉及业务处理,系统瓶颈不应该是在网关。
考虑我们公司的实际情况,倾向使用 .net core+spring cloud gateway,这样大家各自做各自的,只需要做好接入就好了。
测试结果明细
1. 直测.net core接口 QPS: 51305.10
wrk -t -c -d 60s --latency --timeout 3s http://172.16.1.65:9001/user/get
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .83ms .10ms .00s 90.15%
Req/Sec .04k 495.03 .76k 78.30%
Latency Distribution
% .64ms
% .33ms
% .34ms
% .98s
requests in 1.00m, .96MB read
Socket errors: connect , read , write , timeout
Requests/sec: 51305.10
Transfer/sec: .34MB
2. 直测spring boot 接口 QPS: 45933.02
wrk -t -c -d 60s --latency --timeout 3s http://172.16.1.65:9004/user/get
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .69ms .08ms .00s 87.63%
Req/Sec .93k 320.20 .28k 69.47%
Latency Distribution
% .25ms
% .19ms
% .66ms
% .10s
requests in 1.00m, .67MB read
Socket errors: connect , read , write , timeout
Requests/sec: 45933.02
Transfer/sec: .70MB
3. .net core 接口(65:6002、68:6004) + ocelot QPS:9068.52
wrk -t -c -d 60s --latency --timeout 3s http://172.16.1.120:6000/api/values/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .82ms .67ms .00s 74.12%
Req/Sec 190.05 119.66 .26k 67.26%
Latency Distribution
% .16ms
% .96ms
% .18s
% .69s
requests in 1.00m, .96MB read
Socket errors: connect , read , write , timeout
Non-2xx or 3xx responses:
Requests/sec: 9068.52
Transfer/sec: .51MB
4. spring boot 接口(65:9004、68:9004) + spring cloud gateway QPS:7497.19
wrk -t -c -d 60s --latency --timeout 3s http://172.16.1.120:8000/user-service/user/get
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .39ms .40ms .98s 68.88%
Req/Sec 220.62 288.26 .25k 92.94%
Latency Distribution
% .92ms
% .53ms
% .77ms
% .96ms
requests in 1.00m, .72MB read
Socket errors: connect , read , write , timeout
Requests/sec: 7497.19
Transfer/sec: .94MB
5. .net core 接口(65:9001、68:9001) + spring cloud gateway QPS:7762.32
wrk -t -c -d 60s --latency --timeout 3s http://172.16.1.120:8000/user-service/user/get
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .75ms .90ms .98s 74.25%
Req/Sec 211.85 244.15 .78k 93.53%
Latency Distribution
% .13ms
% .84ms
% .64ms
% .74ms
requests in 1.00m, .73MB read
Socket errors: connect , read , write , timeout
Requests/sec: 7762.32
Transfer/sec: .11MB
.net core 所有应用,在Startup中关闭日志
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(op => op.ClearProviders());
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
Ocelot 网关,在Startup中关闭日志,注释掉mvc的注入和使用
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(op => op.ClearProviders());
services.AddOcelot(Configuration); //services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseOcelot().Wait(); //app.UseMvc(routes => {
// routes.MapRoute(
// name: "default",
// template: "{controller=Home}/{action=Index}/{id?}");
//}); }
.net core下,Ocelot网关与Spring Cloud Gateway网关的对比测试的更多相关文章
- Spring Cloud gateway 网关服务二 断言、过滤器
微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...
- 网关服务Spring Cloud Gateway(一)
Spring 官方最终还是按捺不住推出了自己的网关组件:Spring Cloud Gateway ,相比之前我们使用的 Zuul(1.x) 它有哪些优势呢?Zuul(1.x) 基于 Servlet,使 ...
- 微服务网关实战——Spring Cloud Gateway
导读 作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用.本文对Spring Clou ...
- Spring Cloud gateway 网关四 动态路由
微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...
- Spring Cloud实战 | 第十一篇:Spring Cloud Gateway 网关实现对RESTful接口权限控制和按钮权限控制
一. 前言 hi,大家好,这应该是农历年前的关于开源项目 的最后一篇文章了. 有来商城 是基于 Spring Cloud OAuth2 + Spring Cloud Gateway + JWT实现的统 ...
- 最全面的改造Zuul网关为Spring Cloud Gateway(包含Zuul核心实现和Spring Cloud Gateway核心实现)
前言: 最近开发了Zuul网关的实现和Spring Cloud Gateway实现,对比Spring Cloud Gateway发现后者性能好支持场景也丰富.在高并发或者复杂的分布式下,后者限流和自定 ...
- 微服务架构spring cloud - gateway网关限流
1.算法 在高并发的应用中,限流是一个绕不开的话题.限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击. 一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池.线程池). ...
- 从0开始构建你的api网关--Spring Cloud Gateway网关实战及原理解析
API 网关 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题 ...
- api网关揭秘--spring cloud gateway源码解析
要想了解spring cloud gateway的源码,要熟悉spring webflux,我的上篇文章介绍了spring webflux. 1.gateway 和zuul对比 I am the au ...
随机推荐
- [CSS3] Create a fixed-fluid-fixed layout using CSS calc()
CSS calc() allows you to mix and match units to get real-time calculations. It's useful when you nee ...
- linux(debian)系统django配远程连接sqlserver数据库
费了将近一天时间.最终解决,记下来留给须要的人 须要安装的: python-odbc : https://github.com/mkleehammer/pyodbc下载后install 安装pytho ...
- 50个SQL语句
一个项目用到的50个SQL语句 转载 说明:下面五十个语句都依照測试数据进行过測试.最好每次仅仅单独执行一个语句. 问题及描写叙述: --1.学生表 Student(Sid,Sname,Sage,Ss ...
- wdcp忘记mysql的root密码
复制别人的 不管出于何种原因,应该有不少的朋友在自己的VPS/服务器上采用WDCP管理面板的时候有忘记MYSQL ROOT账户管理密码在寻找解决方法,甚至有忘记WDCP后台管理登录密码的.这些问题都比 ...
- python 爬取bilibili 视频信息
抓包时发现子菜单请求数据时一般需要rid,但的确存在一些如游戏->游戏赛事不使用rid,对于这种未进行处理,此外rid一般在主菜单的响应中,但有的如番剧这种,rid在子菜单的url中,此外返回的 ...
- erlang app 文件
http://hje.iteye.com/blog/1211734 应用的概念¶ 当我们写了实现特定功能的代码之后,我们可能想将代码转成一个 应用 (application),这是可以作为一个单元启动 ...
- 检索06 - Oracle MySql SqlSever之间的区别和优缺点
三者之间区别 历史 1 Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision. Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十 ...
- Delphi新手跟我学写CALL,附完整原程序
在开始进入正题前先罗嗦几句: 1.本人也刚学Delphi不久,也刚通过<诛仙>游戏的绝大部分CALL不久.所以在以下所说所列举的例子并不算是名门正中的写法,如有不当,请各位原谅. 2.本人 ...
- tombstone问题分析
tombstone文件包含了发生问题的进程ID信息 I/DEBUG ( 241): pid: 244, tid: 244, name: mediaserver >>> /system ...
- 基于PCM2912a的USB声卡设计
将近一年时间没有做过硬件了,感觉都不会用Altium Designer软件了.这次做这个USB 声卡有两个目的,其一是复习Altium Designer软件:其二是在业余时间找个事做做,打发一下自己的 ...