SA и Сервис дизайн | Тимур Бобылев
Тимур Бобылев, Старший системный аналитик в Сбер · 03.01 · ред.
Что такое gRPC и когда его применять? gRPC (Remote Procedure Call) — это высокопроизводительный протокол, позволяющий распределённым системам взаимодействовать по схеме «клиент вызывает методы на сервере, как будто это локальные функции». Ключевые особенности gRPC 1. Контрактно-ориентированный подход Разработчик описывает услуги (сервисы) и структуру сообщений в файле .proto. Сервер читает этот контракт и реализует соответствующие методы. Клиент использует тот же контракт для генерации «прокси»-кода (stub), позволяющего вызывать методы сервера так, как если бы они были локальными. 2. Высокая производительность Использование HTTP/2 даёт преимущество в скорости и поддерживает двунаправленные (bidirectional) потоки. Protocol Buffers (Protobuf) обеспечивает компактное представление и строгую типизацию сообщений. 3. Сравнение с REST REST обычно работает через HTTP/1.1 или HTTP/2, используя JSON. JSON понятен человеку, но «тяжелее» и менее строг по сравнению с Protobuf. gRPC помогает унифицировать коммуникацию для разных языков и платформ, что упрощает поддержку масштабируемых проектов и повышает быстродействие. 4. Порядок реализации Шаг 1. Опишите контракты (сервисы, методы, структуры сообщений) в файле .proto. Шаг 2. Реализуйте серверную логику (service implementation) на основе этого контракта. Шаг 3. Сгенерируйте клиентский код (client stub) по тому же .proto-файлу. Шаг 4. Вызывайте методы удалённого сервиса так, будто это локальные функции, используя сгенерированный код. 5. Когда стоит применять gRPC Микросервисная архитектура: особенно там, где требуется высокая пропускная способность или низкие задержки между сервисами. Стриминговые сценарии: двунаправленный поток удобен для обмена данными в реальном времени (например, IoT или онлайн-чаты). Кросс-платформенность: единый формат для сервисов на разных языках. В целом, gRPC даёт строгие контракты, высокую производительность и удобство при создании распределённых систем. Делитесь в комментариях своим опытом внедрения gRPC в продакшене!
Алексей Шашев
· 04.01
Ещё можно добавить генерацию валидаторов для полей https://github.com/bufbuild/protovalidate
Позволяет точнее выразить ограничения на значения. Автоматом, увы, ограничения проверятся не будут, но будут сгенерированы валидаторы.
ответить
SA и Сервис дизайн | Тимур Бобылев
04.01
Спасибо за уточнение
ответить
еще контент автора
еще контент автора
SA и Сервис дизайн | Тимур Бобылев
Тимур Бобылев, Старший системный аналитик в Сбер · 03.01 · ред.
войдите, чтобы увидеть
и подписаться на интересных профи