Сравниваем производительность REST и gRPC / Хабр

Сравниваем производительность REST и gRPC / Хабр Расшифровка

Что такое grpc?

Для тех, кто еще не слышал о gRPC, gRPC — это не зависящий от языка фреймворк для удаленного вызова процедур (RPC, remote procedure calls), разработанный Google, которая серьезно вкладывается в производительность и масштабирование. Он появился довольно давно, но многие (а, может быть, только я) отложили его на второй план из-за затрат на написание IDL и дополнительного кода стабов (stub), который тоже необходимо поддерживать. В то же время REST очень легко реализуется с помощью ASP.NET Core WebAPI.

Sautrans — служба доставки | грузоперевозки любой сложности

Компания SauTrans приветствует вас на своем официальном сайте! Мы быстро и безопасно осуществляем перевозки грузов различной сложности. Сделать заказ на транспортные услуги могут как физические, так и юридические лица. Для доставок задействованы все виды транспорта:

  • автомобильный. Наш автопарк состоит из 400 машин грузоподъемностью от 1,5 до 20 тонн, поэтому грузовики подаются под загрузку через несколько часов после заявки на автотранспортную перевозку;
  • железнодорожный. У нас заключены прямые договоры с владельцами подвижного ж/д состава, вагоны и платформы предоставляются в любом количестве и без дополнительных посредников;
  • морской. Мы специализируемся на контейнерных перевозках грузов в международных и внутрироссийских направлениях. Грузоперевозка водным транспортом является самой дешевой по сравнению с другими видами транспортировки;
  • авиационный. Это самый скоростной способ доставки грузов, и чем больше расстояние между пунктами, тем заметнее разница во времени по сравнению с другими способами;
  • мультимодальный. Наиболее востребованный вид грузовых перевозок, особенно при доставке по схеме «от двери до двери». Услуга оказывается двумя видами транспорта или более.
  • Международные. У нас можно заказать как небольшую курьерскую доставку, так и перевозку полными фурами, вагонами или судами.
  • По России. Доставляем грузы из любого населенного пункта в любой другой. Для нас нет недоступных городов или неудобных маршрутов.
  • Внутригородские доставки. Предоставляем удобный сервис по перевозке грузов по Москве. Организуем регулярное снабжение торговых точек внутри МКАД и за ее пределами, а также по Московской области. Организуем аналогичный сервис и в любом другом российском городе.
Другие сокращения:  «АПТ» — — все сокращения России!

При заказе грузовой перевозки у нас вы убедитесь, что стоимость услуг является одной из самых низких на рынке. Помимо цен, стоит отметить следующие значимые преимущества перед другими транспортными компаниями:

  • система отслеживания груза в пути и информирования клиента о его местонахождении;
  • страхование ответственности перевозчика на 15 миллионов рублей;
  • дополнительные услуги — заказ грузчиков, ответственное хранение на складе, экспедирование, сопровождение, охрана;
  • прозрачная система документации;
  • оплата любым удобным способом.

Мы нацелены на долгосрочное сотрудничество, считаем всех наших клиентов партнерами и готовы делиться нашими наработками и опытом. Ждем ваших заявок!

Ограничения бенчмарка

Было несколько ограничений, которые я хотел реализовать при бенчмаркинге:

Протестируйте сами

Если вы хотите повторить тест самостоятельно или подстроить его под себя, то не стесняйтесь клонировать мой репозиторий EmperorRXF/RESTvsGRPC

Для теста запустите оба сервиса, как показано ниже.

Запуск RestAPI: dotnet run -p RestAPI -c Release

Запуск GrpcAPI: dotnet run -p GrpcAPI -c Release

И запустите бенчмарк.

Запуск бенчмарка: dotnet run -p RESTvsGRPC -c Release

Структура проекта

Пример данных NASA о метеоритах
Пример данных NASA о метеоритах

Также для gRPC-сервиса были созданы следующие определения Protocol Buffers для сообщений и сервисов.

Определения Protocol Buffer для сообщений
Определения Protocol Buffer для сообщений

Я также тестирую производительность потоковой передачи (stream) gRPC с помощью сервиса GetLargePayload.

Определения Protocol Buffer для сервисов
Определения Protocol Buffer для сервисов

Как я уже упоминал выше в разделе об ограничениях, я убрал лишнее логирование, чтобы оно не влияло на результаты бенчмарка.

Уменьшение уровня логирования для ASP.NET MVC Core WebAPI
Уменьшение уровня логирования для ASP.NET MVC Core WebAPI
Оцените статью
Расшифруй.Ру