• JMS微服务远程调用性能测试 vs .Net Core gRPC服务


    gRPC性能测试(.net 5)

    创建一个最简单的gRPC服务,服务器代码如下:

    using Grpc.Core;
    using Microsoft.Extensions.Logging;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace GrpcService1
    {
        public class GreeterService : Greeter.GreeterBase
        {
            private readonly ILogger<GreeterService> _logger;
            public GreeterService(ILogger<GreeterService> logger)
            {
                _logger = logger;
            }
    
            public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
            {
                return Task.FromResult(new HelloReply
                {
                    Message = "Hello " + request.Name + DateTime.Now.ToString("HH:mm:ss")
                });
            }
        }
    }

    创建一个c#控制台程序作为gRPC客户端,代码如下:

    using System;
    using System.Net.Http;
    using System.Threading.Tasks;
    using Grpc.Net.Client;
    
    namespace GrpcGreeterClient
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                System.Threading.Thread.Sleep(3000);
    
                // The port number(5001) must match the port of the gRPC server.
                using var channel = GrpcChannel.ForAddress("http://localhost:5000");
    
                var client = new Greeter.GreeterClient(channel);
    
                System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
                sw.Start();
    
                for (int i = 0; i < 1000; i++)
                {
                    var reply = await client.SayHelloAsync(
                                      new HelloRequest { Name = "GreeterClient" });
                    //Console.WriteLine("Greeting: " + reply.Message);
                }
                sw.Stop();
                Console.WriteLine("用时:" + sw.ElapsedMilliseconds + "ms");
                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }
        }
    }

    同时启动这两个工程,最后客户端调用1000次服务器,用时:1405ms

    注:服务器端已经关闭日志,开启日志的话,用时7000多ms

    JMS性能测试(.net 5)

    创建一个最简单的微服务,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace JMS.MicroServiceHost2.Controllers
    {
        public class DemoController : BaseController
        {
            public string Hello(string name)
            {
                return "Hello " + name + DateTime.Now.ToString("HH:mm:ss");
            }
        }
    }

    创建一个c#控制台程序作为客户端,代码如下:

    using System;
    using System.Net.Http;
    using System.Threading.Tasks;
    using Grpc.Net.Client;
    
    namespace GrpcGreeterClient
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                System.Threading.Thread.Sleep(3000);
    
                using (JMS.JMSClient jmsClient = new JMS.JMSClient("47.52.0.186", 8900))
                {
                    var service = jmsClient.GetMicroService("DemoService");
                    System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
                    sw.Start();
    
                    for (int i = 0; i < 1000; i++)
                    {
                        var ret = service.Invoke<string>("Hello", "GreeterClient");
                    }
                    sw.Stop();
                    Console.WriteLine("用时:" + sw.ElapsedMilliseconds + "ms");
                }
    
                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }
        }
    }

    同时启动这两个工程,最后客户端调用1000次服务器,用时:154ms

  • 相关阅读:
    解决nginx启动后进程存在但访问不到的问题
    验证nginx配置文件遇到的路径问题
    前端npm run build打包和tar压缩示例讲解
    安装vuecodemirror支持SQL可视化
    redis学习之安装
    nginx版本升级详解
    前端二次非对称RSA加密密文太长的问题
    听《Node服务线上故障》分享的思考
    fastdfs部署及官网
    vue踩坑
  • 原文地址:https://www.cnblogs.com/IWings/p/14778009.html
Copyright © 2020-2023  润新知