Comparando o desempenho de REST e gRPC

Olá, Habr. Para os futuros alunos do curso "Highload Architect" preparamos uma tradução do material.



Também convidamos você a se inscrever em um webinar aberto sobre o tópico "Replicação como um padrão de escalonamento horizontal de armazenamento" com Vladislav Rodin (líder de equipe e especialista em desenvolvimento empresarial Java). Nesta lição, os participantes irão percorrer a replicação, uma das técnicas de escalonamento de banco de dados.






Tenho vários microsserviços que se comunicam entre si usando JSON sobre REST e parece-me que em breve eles atingirão o limite de desempenho do VPS e precisarei atualizá-lo para que não haja redução de desempenho.





, gRPC ( ) , , , gRPC.





gRPC?

, gRPC, gRPC — (RPC, remote procedure calls), Google, . , (, , ) - IDL (stub), . REST ASP.NET Core WebAPI.





JSON REST, gRPC Protocol Buffers — . gRPC REST. Protocol Buffers protoc, proto-. , gRPC HTTP/2, , HTTP- .





, :





  • -. , .





  • . . .





  • , . .





  • ModelLibrary REST gRPC-. , , , , . NASA , 1000 , .





Amostra de dados de meteorito da NASA
NASA

gRPC- Protocol Buffers .





Definições de buffer de protocolo para mensagens
Protocol Buffer

(stream) gRPC GetLargePayload



.





Definições de buffer de protocolo para serviços
Protocol Buffer
  • RestAPI WebAPI, , : , .





Roteamento ASP.NET MVC Core
ASP.NET MVC Core

, , .





Reduzindo o nível de registro para ASP.NET MVC Core WebAPI
ASP.NET MVC Core WebAPI
  • GrpcAPI gRPC-. , GetLargePayload



    , .





Implementação de serviço GrpcAPI
GrpcAPI
  • RESTvsGRPC , 100 200 , . , 100 200 .





Comparativo de mercado RESTvsGRPC
RESTvsGRPC

 

, gRPC , . REST. gRPC , . , HTTP/2, , HTTP.





Resultados de benchmark em Linux
Linux

Windows . Windows .





Resultados de benchmark no Windows
Windows
Desempenho REST vs GRPC
REST vs GRPC

, EmperorRXF/RESTvsGRPC





, .





RestAPI: dotnet run -p RestAPI -c Release







GrpcAPI: dotnet run -p GrpcAPI -c Release







.





: dotnet run -p RESTvsGRPC -c Release







gRPC REST . Protocol Buffers HTTP/2 gRPC.





gRPC 45 10 WebAPI. , REST , ( , ASP.NET Core MVC) ( ). gRPC, , , , protoc, Visual Studio . , , ItemGroup "Protobuf" csproj-. , gRPC ASP.NET Core 3.0.





, gRPC. 






"Highload Architect".





« »








All Articles