Comparación del rendimiento de REST y gRPC

Hola, Habr. Para los futuros alumnos del curso "Highload Architect" preparamos una traducción del material.



También lo invitamos a registrarse en un seminario web abierto sobre el tema "La replicación como patrón de escalamiento horizontal del almacenamiento" con Vladislav Rodin (líder del equipo y especialista en desarrollo empresarial de Java). En esta lección, los participantes recorrerán la replicación, una de las técnicas de escalado de bases de datos.






Tengo varios microservicios que se comunican entre sí usando JSON sobre REST, y me parece que pronto alcanzarán el límite de rendimiento del VPS, y tendré que actualizarlo para que no se reduzca el rendimiento.





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





Muestra de datos de meteoritos de la NASA
NASA

gRPC- Protocol Buffers .





Definiciones de búfer de protocolo para mensajes
Protocol Buffer

(stream) gRPC GetLargePayload



.





Definiciones de búfer de protocolo para servicios
Protocol Buffer
  • RestAPI WebAPI, , : , .





Enrutamiento ASP.NET MVC Core
ASP.NET MVC Core

, , .





Reducir el nivel de registro para ASP.NET MVC Core WebAPI
ASP.NET MVC Core WebAPI
  • GrpcAPI gRPC-. , GetLargePayload



    , .





Implementación del servicio GrpcAPI
GrpcAPI
  • RESTvsGRPC , 100 200 , . , 100 200 .





Punto de referencia RESTvsGRPC
RESTvsGRPC

 

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





Resultados comparativos en Linux
Linux

Windows . Windows .





Resultados comparativos en Windows
Windows
Rendimiento de 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