1. 程式人生 > >.net core ——微服務內通訊Thrift和Http客戶端響應比較

.net core ——微服務內通訊Thrift和Http客戶端響應比較

目錄

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。


在此我向大家推薦一個微服務架構學習交流群。交流學習群號:864759589 裡面會分享一些資深架構師錄製的視訊錄影:高併發、高效能、分散式、微服務架構的原理,分散式架構等這些成為架構師必備的知識體系。
在這裡插入圖片描述


引用連結

  1. 口袋程式碼倉庫
  2. 線上計算器
  3. 本節原始碼:github