.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 ...
随机推荐
- spark 编程教程
参考: 英文:https://spark.apache.org/docs/latest/programming-guide.html 中文:http://www.cnblogs.com/lujin ...
- [Now] Deploy a Node project with Zeit’s Now
Use Zeit’s now to deploy a node application from your local machine to a remote cloud service in mom ...
- 怎样实现iMessage群发
怎样实现iMessage群发 Apple公司全线在mac os与ios两个操作系统上内置了FaceTime与iMessage两个应用.完美替代运营商的短信与电话.并且FaceTime与iMessage ...
- HDOJ 2043 password
刚開始看到这个题目的时候,就直接理解成仅仅要是长度符合要求而且字符符合要求,就是一个安全的password了,并没有考虑到至少要3种字符的组合.然后就直接写程序了(先暂且觉得题目就是那个意思),在測试 ...
- Xcode6 模拟器路径
Xcode6公布后,出现了非常多的变动,功能性的变动,在这里不进行过多的赘述,在WWDC上苹果已经进行了讲述,网上也有非常多文章,这里要介绍的是一些不太easy发现的,但非常重要的小地方. ...
- ios开发之多线程---GCD
一:基本概念 1:进程:正在运行的程序为进程. 2:线程:每个进程要想执行任务必须得有线程,进程中任务的执行都是在线程中. 3:线程的串行:一条线程里任务的执行都是串行的,假如有一个进程开辟了一条线程 ...
- hosts 持续更新 - laod
https://laod.cn/hosts/2017-google-hosts.html 2017 Google hosts 持续更新[更新于:2017-08-22] 4,347 2,367,079 ...
- 原生js如何实现图片翻转旋转效果?
原生js如何实现图片翻转旋转效果? 一.总结 1.通过给元素设置style中的transition来实现的. 2.我昨天纠结的效果全部可以通过精读这个代码后实现. 二.原生js如何实现图片翻转旋转效果 ...
- windows下 管理员身份启动java进程
http://blog.csdn.net/zhuyijian135757/article/details/38234757
- NOIP模拟 Game - 简单博弈,dp
题意: 有n个带权球,A和B两个人,A先手拿球,一开始可以拿1个或2个,如果前一个人拿了k个,那么当前的这个人只能那k或k+1个,如果当前剩余的球不足,那么剩下的球都作废,游戏结束.假设两个人都是聪明 ...