чем разница (с REST работал, а с gRPC ещё не доводилось). Кроме как протобафа и второй версии http есть ли ещё отличия?
REST - это парадигма, grpc - конкретный протокол
Тогда очень странно, что их вообще сравнивают
Сравнивают скорее REST и RPC как подходы, а gRPC это просто одна из наиболее распространенных реализаций в нашем стеке, и она облегчает многие моменты для разработчика
Ещё у меня возник вопрос о нагрузке на сервер. Если при REST мы обслуживаем по очереди, то при gRPC мы можем одновременно несколько, как это вообще влияет на потребление ресурсов? (если я не прав, то поправьте меня)
Вы не обслуживаете REST по очереди)
Скорее разница между http и gRPC (поверх http2), пожалуй самые важные отличия grpc это типизация методов и параметров с помощью описания proto файлов (и автомагическая генерация сервера и клиента из этих файлов), честное двунаправленное соединение и бинарный протокол http2. Для http можно также описывать методы и параметры и генерить по этим описаниям сервер и клиенты с помощью экосистемы swagger (openapi)
когда микросервис получает несколько запросов от более чем одного клиента, он должен обслуживать их по одному, что замедляет работу всей системы. API REST также могут использовать HTTP 2, они по-прежнему ограничены моделью запрос-ответ и не используют поддержку HTTP 2 для двунаправленной потоковой связи. В отличие от этого, gRPC использует HTTP 2 и пользуется преимуществами поддержки HTTP 2 как для взаимодействия с клиентом, так и для двунаправленной связи. Таким образом, gRPC может управлять «унарными» взаимодействиями, аналогичными HTTP 1.1 (когда клиент отправляет один запрос, а сервер отправляет один ответ). В то же время клиенты могут также открывать долговременные соединения, в которых каждый вызов RPC открывает новый поток HTTP 2, также известный как двунаправленная, «мультиплексируемая» или потоковая связь.
Эм, что то очень странное написано, REST никак вам не диктует порядок обработки входящих запросов, все зависит от реализации. Если взять какую нибудь Django на python, то там да, один воркер - один запрос единовременно, именно поэтому поднимают пул воркеров. В го же все web серверы обрабатывают входящие сообщения в отдельных горутинах асинхронно
Этот текст ввел вас в заблуждение. Вы обслуживаете запросы последовательно в рамках одного соединения, никто не мешает использовать более одного соединения. Более того, если вы посылаете несколько запросов параллельно, то как раз несколько соединений и будут использованы и обработы параллельно (условно) на стороне сервера. На сколько я понял, что тут написано, автор пытается рассказать про возможность HTTP2 использовать несколько нитей в рамках одного соединения
Да, я поэтому не очень понял эту строчку и решил спросить
ааа, теперь стало понятно, что тут не про соединение написано, спасибо
Обсуждают сегодня