zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    大数据实践解析(上):聊一聊spark的文件组织方式
    npm 项目更换目录后无法启动
    Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求
    Vue 爬坑之路(五)—— 组件进阶
    Vue 爬坑之路(四)—— 与 Vuex 的第一次接触
    Vue 爬坑之路(三)—— 使用 vue-router 跳转页面
    Vue 爬坑之路(二)—— 组件之间的数据传递
    Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目
    同步类的基础AbstractQueuedSynchronizer(AQS)
    由于不当的执行顺序导致的死锁
  • 原文地址:https://www.cnblogs.com/IWings/p/14778009.html
Copyright © 2011-2022 走看看