zoukankan      html  css  js  c++  java
  • .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 50 -c 10000 -d 60s --latency --timeout 3s http://172.16.1.65:9001/user/get
      50 threads and 10000 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency   153.83ms  390.10ms   3.00s    90.15%
        Req/Sec     1.04k   495.03    28.76k    78.30%
      Latency Distribution
         50%    4.64ms
         75%    5.33ms
         90%  534.34ms
         99%    1.98s 
      3082512 requests in 1.00m, 440.96MB read
      Socket errors: connect 0, read 4777, write 4800, timeout 23227
    Requests/sec:  51305.10
    Transfer/sec:      7.34MB

      2.  直测spring boot 接口 QPS: 45933.02

    wrk -t 50 -c 10000 -d 60s --latency --timeout 3s http://172.16.1.65:9004/user/get
      50 threads and 10000 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency   222.69ms  439.08ms   3.00s    87.63%
        Req/Sec     0.93k   320.20     4.28k    69.47%
      Latency Distribution
         50%    6.25ms
         75%  306.19ms
         90%  776.66ms
         99%    2.10s 
      2760646 requests in 1.00m, 342.67MB read
      Socket errors: connect 0, read 2169, write 5481, timeout 20834
    Requests/sec:  45933.02
    Transfer/sec:      5.70MB

    3. .net core 接口(65:6002、68:6004) + ocelot  QPS:9068.52

    wrk -t 50 -c 10000 -d 60s --latency --timeout 3s http://172.16.1.120:6000/api/values/
      50 threads and 10000 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency   849.82ms  287.67ms   3.00s    74.12%
        Req/Sec   190.05    119.66     5.26k    67.26%
      Latency Distribution
         50%  840.16ms
         75%  999.96ms
         90%    1.18s 
         99%    1.69s 
      545037 requests in 1.00m, 90.96MB read
      Socket errors: connect 0, read 11, write 2905, timeout 1181
      Non-2xx or 3xx responses: 3
    Requests/sec:   9068.52
    Transfer/sec:      1.51MB

    4. spring boot 接口(65:9004、68:9004) + spring cloud gateway    QPS:7497.19

    wrk -t 50 -c 10000 -d 60s --latency --timeout 3s http://172.16.1.120:8000/user-service/user/get 
      50 threads and 10000 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency   174.39ms   96.40ms   2.98s    68.88%
        Req/Sec   220.62    288.26     4.25k    92.94%
      Latency Distribution
         50%  163.92ms
         75%  236.53ms
         90%  297.77ms
         99%  404.96ms
      450571 requests in 1.00m, 56.72MB read
      Socket errors: connect 0, read 0, write 279597, timeout 1490
    Requests/sec:   7497.19
    Transfer/sec:      0.94MB

    5. .net core 接口(65:9001、68:9001) + spring cloud gateway    QPS:7762.32

    wrk -t 50 -c 10000 -d 60s --latency --timeout 3s http://172.16.1.120:8000/user-service/user/get  
      50 threads and 10000 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency   174.75ms   85.90ms   2.98s    74.25%
        Req/Sec   211.85    244.15     2.78k    93.53%
      Latency Distribution
         50%  165.13ms
         75%  220.84ms
         90%  276.64ms
         99%  392.74ms
      466503 requests in 1.00m, 66.73MB read
      Socket errors: connect 0, read 0, write 250560, timeout 1407
    Requests/sec:   7762.32
    Transfer/sec:      1.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?}");
                //});
              
            }
  • 相关阅读:
    494. Target Sum 添加标点符号求和
    636. Exclusive Time of Functions 进程的执行时间
    714. Best Time to Buy and Sell Stock with Transaction Fee有交易费的买卖股票
    377. Combination Sum IV 返回符合目标和的组数
    325. Maximum Size Subarray Sum Equals k 和等于k的最长子数组
    275. H-Index II 递增排序后的论文引用量
    274. H-Index论文引用量
    RabbitMQ学习之HelloWorld(1)
    java之struts2的数据处理
    java之struts2的action的创建方式
  • 原文地址:https://www.cnblogs.com/zyh1989/p/10457296.html
Copyright © 2011-2022 走看看