REST против gRPC
Довольно популярный технический вопрос в топ 5 банках. Описание в комментариях 👇
152
👍 2
2
Комментарии (2)
Лохматый Осьминог
REST против gRPC
Выбор между REST и gRPC сначала кажется простым, но в итоге это влияет на то, как ваши сервисы общаются, масштабируются и даже ломаются.
Оба пытаются решить одну и ту же проблему: как сервисы общаются друг с другом. Но их подход к этому отличается.
1. Формат данных
- REST обычно использует JSON. Он читается человеком, легко отладить и работает везде.
- gRPC использует буферы протоколов (Protobuf). Он бинарный, меньше по размеру и быстрее в обработке.
Вы начинаете замечать эту разницу в системах, ориентированных на производительность. JSON удобен, но Protobuf создан для эффективности.
2. Стиль API
- REST основана на ресурсах: /users/101 с GET, POST, PUT, DELETE.
- gRPC основана на методах: GetUser(), CreateUser(), UpdateUser().
REST хорошо подходит для публичных API. gRPC же больше похож на вызов функции другого сервиса.
3. Модель коммуникации
- REST — это простой запрос/ответ. Одна просьба, один ответ.
- gRPC поддерживает больше паттернов: unary, серверная стриминга, клиентская стриминг и двусторонняя потоковая передача.
Стриминг становится очень полезным, когда нужны обновления в реальном времени или долгосрочные соединения.
4. Безопасность контрактов и типов API
- REST-контракты обычно определяются отдельно (OpenAPI/Swagger), и несоответствия всё равно могут возникать.
- gRPC использует общий .proto-файл с строгими типами и генерацией кода.
С gRPC и клиент, и сервер имеют одно и то же определение, поэтому при интеграции возникает меньше проблем.
5. Кэширование и поддержка браузера
- REST хорошо работает с HTTP-кэшированием, CDN и браузерами.
- gRPC имеет ограниченную поддержку браузеров (обычно через gRPC-Web) и естественно не подходит для кэширования HTTP.
Любопытный Миротворец
Ищем людей умеющие думать на подработку оплата от 2000 тысяч рублей не удаленно!
Комментарии (2)
Выбор между REST и gRPC сначала кажется простым, но в итоге это влияет на то, как ваши сервисы общаются, масштабируются и даже ломаются.
Оба пытаются решить одну и ту же проблему: как сервисы общаются друг с другом. Но их подход к этому отличается.
1. Формат данных
- REST обычно использует JSON. Он читается человеком, легко отладить и работает везде.
- gRPC использует буферы протоколов (Protobuf). Он бинарный, меньше по размеру и быстрее в обработке.
Вы начинаете замечать эту разницу в системах, ориентированных на производительность. JSON удобен, но Protobuf создан для эффективности.
2. Стиль API
- REST основана на ресурсах: /users/101 с GET, POST, PUT, DELETE.
- gRPC основана на методах: GetUser(), CreateUser(), UpdateUser().
REST хорошо подходит для публичных API. gRPC же больше похож на вызов функции другого сервиса.
3. Модель коммуникации
- REST — это простой запрос/ответ. Одна просьба, один ответ.
- gRPC поддерживает больше паттернов: unary, серверная стриминга, клиентская стриминг и двусторонняя потоковая передача.
Стриминг становится очень полезным, когда нужны обновления в реальном времени или долгосрочные соединения.
4. Безопасность контрактов и типов API
- REST-контракты обычно определяются отдельно (OpenAPI/Swagger), и несоответствия всё равно могут возникать.
- gRPC использует общий .proto-файл с строгими типами и генерацией кода.
С gRPC и клиент, и сервер имеют одно и то же определение, поэтому при интеграции возникает меньше проблем.
5. Кэширование и поддержка браузера
- REST хорошо работает с HTTP-кэшированием, CDN и браузерами.
- gRPC имеет ограниченную поддержку браузеров (обычно через gRPC-Web) и естественно не подходит для кэширования HTTP.