<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      一般rpc通訊組件都具有高性特性,因?yàn)榇蟛糠謗pc都是基于二進(jìn)制和連接復(fù)用的特點(diǎn),相對(duì)于HTTP
      (2.0以下的版本)來說有著很大的性能優(yōu)勢(shì),非常適合服務(wù)間通訊交互。本文針對(duì)了dotnet core平臺(tái)上的一些rpc組件進(jìn)行性能測(cè)試,主要包括grpc,
      Orleans,xrpc和netx;其實(shí)平臺(tái)下的rcp組件有很多,畢竟個(gè)人精力有限并沒有一一添加到測(cè)試?yán)锩嫒?;如果大家有興趣可以參與進(jìn)來
      https://github.com/IKende/dotnet-rpc-benchmark
      <https://github.com/IKende/dotnet-rpc-benchmark>添加或優(yōu)化測(cè)試代碼并提交相關(guān)PR。

      測(cè)試描述


      為了更好的體現(xiàn)實(shí)際應(yīng)用的情況,功能和網(wǎng)絡(luò)環(huán)境都會(huì)多樣性測(cè)試。調(diào)用測(cè)試是基于遠(yuǎn)程對(duì)象或接口的方式操作,操作方法包括簡(jiǎn)單和相對(duì)復(fù)雜的對(duì)象;測(cè)試的物理網(wǎng)絡(luò)環(huán)境包括10Gb和普通網(wǎng)絡(luò)1Gb.分別測(cè)試16,32,64,128和256等不同的請(qǐng)求并發(fā)并獲取相關(guān)的總請(qǐng)求量和秒并發(fā)值。

      測(cè)試工具

      https://github.com/IKende/CodeBenchmarkDoc
      <https://github.com/IKende/CodeBenchmarkDoc>

      測(cè)試物理環(huán)境

      *
      Client

      E3-1230v2 16g

      *
      Server

      E5-2670v2 32g

      *
      Network

      10Gb和1Gb

      *
      System

      Windows server

      測(cè)試接口描述
      public interface IGreeter { Task<HelloReply> SayHello(HelloRequest request);
      Task<User> Register(string name, string email, string password, string title,
      string city); Task<List<User>> List(int count); }
      Hello

      client request
      SayHello(new HelloRequest { Name = "you" });
      server response
      return new HelloReply { Message = "Hello " + request.Name };
      Register

      client request
      Greeter.Register("henryfan", "[email protected]", "12345678", "cxo", "guangzhou"
      );
      server response
      return Task.FromResult(new User { Name = name, Email = email, Password =
      password, Title= title, City = city, CreateTime = DateTime.Now, ID=
      Guid.NewGuid().ToString("N") });
      List

      client request
      Greeter.List(10);
      server response
      List<User> items = new List<User>(count); for(int i=0;i<count;i++) { var item
      =new User { Name = "henryfan", City = "guangzhou", Email = "[email protected]",
      Title= "cxo", Password = "12345678", ID = Guid.NewGuid().ToString("N"),
      CreateTime= DateTime.Now }; items.Add(item); }
      測(cè)試總結(jié)

      因?yàn)闇y(cè)試結(jié)果的圖比較多,就在這里先總結(jié)了,有興趣的朋友看完總結(jié)后再細(xì)看結(jié)果(本總結(jié)只針對(duì)現(xiàn)有測(cè)試的組件)。

      *
      orleans

      嚴(yán)格來說orleans的功能其實(shí)已經(jīng)超出一rpc的范圍,因?yàn)樗屑汉虯ctor等應(yīng)用集成;作為rpc
      來說它使用簡(jiǎn)單,基礎(chǔ)性能也并不差,如果不考慮多平臺(tái)交互只是在.net中使用我個(gè)人感覺它是首選。缺點(diǎn)沒有提供多平臺(tái)支持,如果需要更高密集的通訊調(diào)用在性能上還是相對(duì)差了些。

      *
      grpc

      作為http2.0
      和protobuf的結(jié)合體有著多平臺(tái)的通用性,如果你的系統(tǒng)是多環(huán)境集成那這個(gè)絕對(duì)是不二的選擇了;不過官方提供的.net實(shí)現(xiàn)性能并不出色可以說有點(diǎn)強(qiáng)差人意,官方建議使用.net
      core 3.0作為基礎(chǔ)通訊支持,由于這次測(cè)試是基于.net core 2.2 因此測(cè)試結(jié)果比較差。在使用上也要吐槽一下,proto
      描述時(shí)不支持基礎(chǔ)類型的返回值和參數(shù),所有接口方法參數(shù)和返回都必須定義message.

      *
      xrpc

      高吞吐、易用和支持actor是它的特點(diǎn),可以輕松應(yīng)對(duì)Gb級(jí)以上帶寬的rpc
      請(qǐng)求處理,缺點(diǎn)并不提供多語言平臺(tái)支持……如果應(yīng)用需要在服務(wù)間進(jìn)行高密集的通訊交互可以考慮。

      10Gb網(wǎng)絡(luò)測(cè)試結(jié)果

      16并發(fā)



      32并發(fā)



      64并發(fā)



      128并發(fā)

      ?

      ?

      256并發(fā)



      1Gb網(wǎng)絡(luò)測(cè)試結(jié)果

      16并發(fā)



      32并發(fā)



      64并發(fā)



      128并發(fā)



      256并發(fā)


      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          奶大灬舒服灬一进一出三区 | 奇米影视一区二区三区 | 蜜桃av秘 无码一区三区。 | 攵女乱h系列合集多女国产剧 | 黄片艹逼| 欧美性爱福利 | 少妇午夜啪爽嗷嗷叫视频 | 成人三A级做爰无码视频 | 国内三级黄色片 | 91丨色丨国产熟女 红豆tv |