Comparaison des performances REST et gRPC

Bonjour, Habr. Pour les futurs étudiants du cours «Highload Architect» , nous avons préparé une traduction du matériel.



Nous vous invitons également à vous inscrire à un webinaire ouvert sur le thème «La réplication en tant que modèle d'évolutivité du stockage» avec Vladislav Rodin (chef d'équipe et spécialiste du développement d'entreprise Java). Dans cette leçon, les participants découvriront la réplication, l'une des techniques de mise à l'échelle de la base de données.






J'ai plusieurs microservices qui communiquent entre eux en utilisant JSON sur REST, et il me semble que bientôt ils atteindront la limite de performance VPS, et je devrai le mettre à niveau pour qu'il n'y ait pas de baisse de performance.





, 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 , .





Échantillon de données de météorite de la NASA
NASA

gRPC- Protocol Buffers .





Définitions du tampon de protocole pour les messages
Protocol Buffer

(stream) gRPC GetLargePayload



.





Définitions du tampon de protocole pour les services
Protocol Buffer
  • RestAPI WebAPI, , : , .





Routage ASP.NET MVC Core
ASP.NET MVC Core

, , .





Réduction du niveau de journalisation pour ASP.NET MVC Core WebAPI
ASP.NET MVC Core WebAPI
  • GrpcAPI gRPC-. , GetLargePayload



    , .





Implémentation du service GrpcAPI
GrpcAPI
  • RESTvsGRPC , 100 200 , . , 100 200 .





Benchmark RESTvsGRPC
RESTvsGRPC

 

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





Résultats de référence sous Linux
Linux

Windows . Windows .





Résultats de référence sous Windows
Windows
REST vs performances 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