Источник
Remote procedure call
Определение RPC и ключевые свойства.
Перейти на сайт
RPC, REST и gRPC — это разные подходы к удалённым вызовам. Они решают одну задачу: передать запрос через сеть и получить результат, но отличаются стилем интерфейса, уровнем формализации и типичными сценариями применения.
Источник
REST
Архитектурный стиль, основные ограничения и свойства.
Перейти на сайт
Визуализация работы подходов
Выберите подход и посмотрите, как формируется запрос, ответ и контракт между сторонами.
Как работают удалённые вызовы
Выберите подход, чтобы увидеть, как строится запрос и ответ
Запрос и ответ
Client
call getUser(id)
Server
Client
User
Server
Ключевые свойства
- Прозрачность вызова процедуры
- Фокус на методах, а не ресурсах
- Чаще всего бинарная сериализация
Что важно помнить
Клиент вызывает метод, как локальный
Запрос и ответ похожи на функции
Обычно request-response
Все три подхода опираются на клиент-серверный обмен и сериализацию данных.
Источник
gRPC basics
Сервисы, proto-контракты и типы RPC вызовов.
Перейти на сайт
Что у них общего
- Работают по модели клиент-сервер и передают запросы по сети.
- Используют сериализацию данных и контракт между клиентом и сервером.
- Требуют описания ошибок, таймаутов и ретраев.
Чем отличаются
RPC
- Фокус на вызове метода, как локальной функции.
- Удобно для внутренних сервисов и бинарных протоколов.
- Часто сильнее связаны клиент и сервер.
REST
- Фокус на ресурсах и HTTP методах.
- Статeless и хорошо кэшируется.
- Лучше для публичных API и интеграций.
gRPC
- Контракт описывается в .proto и генерирует код.
- Поддерживает streaming вызовы.
- Хорошо подходит для микросервисов.
Когда что выбирать
- RPC удобен для внутренних сервисов, где важна скорость и компактные контракты.
- REST подходит для публичных API и интеграций, где важны кэширование и совместимость.
- gRPC хорош для микросервисов, когда нужен строгий контракт и streaming.
