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

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

知識 type 高並發 要求 generic marker work nag comm

原文:.net core ——微服務內通信Thrift和Http客戶端響應比較

目錄

  • 1、Benchmark介紹
  • 2、測試下微服務訪問效率
  • 3、結果
  • 引用鏈接

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

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