.net core ——微服务内通信Thrift和Http客户端响应比较

本文通过BenchmarkDotNet库对比了使用Thrift和HTTPAPI进行微服务访问的效率。在Windows环境下,两者在1000次和10000次访问的测试中性能差距仅为10ms,最大差距约20ms。测试结果显示HTTPAPI性能表现良好,但在高性能需求场景下,RPC可能更为合适。
摘要由CSDN通过智能技术生成

1、Benchmark介绍

wiki中有定义:基准测试是运行计算机程序,一组程序或其他操作的行为,以便评估对象的相对性能,通常是通过对其运行许多标准测试和试验。

目前许多成熟的github开源项目,均采用Benchmark测试结果作为性能依据。在 .net 代码世界中,当然是使用 BenchmarkDotNet类库。
其支持 :

  • 编程环境 .NET Framework (4.6+), .NET Core (2.0+), Mono, CoreRT

  • 支持语言: C#, F#, Visual Basic

  • 操作系统: Windows, Linux, macOS
    其可以方便的产生数据和图表

2、测试下微服务访问效率

目前我司采用的是Thrift封装的微服务框架,而时常有声音想把它转为Http Api,其实也未尝不可,不过测试下性能指标,是不是更靠谱些。
说干就干。
因为只有.net core版本,因此其他版本忽略之。
//选择两组数据,1000次和10000次访问

[CoreJob(baseline: true)]
    [RPlotExporter, RankColumn]
    public class TestAbc
    {
        [Params(1000, 10000)]
        public int N;


        private Qt2Api api = new Qt2Api(new UserContext
        {
            Token = "04100ccc-0ac5-4ec7-ba53-9ad5fcfac2c4"
        });
        [GlobalSetup]
        public void Setup()
        {
            ServerSetting.Initlize("abb", 1);
            SCMBaseServiceRpcProxyManager.Initlize();
        }
        //这是thrift rpc调用
        [Benchmark]
        public GetListWmsWareHousesResult RpcCall() => CommTools.GetListWmsWareHouses(new RpcContext(null,new Args<object>
        {
            tk= "04100ccc-0ac5-4ec7-ba53-9ad5fcfac2c4"
        }),out StatusCode code);
        //这是Http api调用
        [Benchmark]
        public Nullables ApiCall() => api.Call<Nullables,Nullables>("/mark/Test",new Nullables());
    }

3、结果


window平台下,仅有 10ms的差距,说明http api性能还是不错的!从最大值上看相差20ms。如果对性能要求较高,采用RPC是个不错的选择,毕竟查下数据库也不过几个ms甚至ns。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值