← Ко всем open source проектам

gRPC

grpc/grpc

gRPC — высокопроизводительный RPC-фреймворк для связи клиентских и серверных приложений с контрактами, генерацией кода и несколькими языками.

Форки 11,167
Автор grpc
Язык C++
Лицензия Apache-2.0
Обновлено 2026-06-27

Что это такое

gRPC — современный RPC-фреймворк для связи клиентских и серверных приложений. Он помогает описывать сервисы как строгие контракты.

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

Главная идея gRPC — описать методы и сообщения в контракте, затем сгенерировать клиентский и серверный код для нужных языков.

Как устроен проект

Внутри репозитория — C++-ядро, реализации и связки для нескольких языков, документация по использованию, разработке, производительности и концепциям.

gRPC обычно связывают с Protocol Buffers, HTTP/2, потоками, строгими схемами сообщений и сервисными контрактами между командами.

Как это используют

Обычный сценарий: команда описывает proto-файл, генерирует код, реализует сервер и вызывает методы так, будто это обычные функции.

В микросервисной архитектуре gRPC полезен там, где важны скорость, контракт, двусторонние потоки или многоязычная среда.

Практический пример

Контракт сервиса

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

Язык: Plain text
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest { string name = 1; }
message HelloReply { string message = 1; }

Сильная сторона проекта — ясная граница между сервисами. Контракт становится предметом обсуждения, версионирования и автоматической генерации.

Сильные стороны

Еще одно преимущество — производительность и поддержка потоков, из-за чего gRPC часто выбирают для внутренних сервисных связей.

Ограничение в том, что gRPC добавляет инфраструктурную сложность. Нужно понимать генерацию, версии контрактов, совместимость и диагностику сетевых ошибок.

Ограничения

Также он не всегда удобен для публичных браузерных API, где обычный HTTP/JSON проще для сторонних пользователей и инструментов.

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

Кому подойдет

Для маленького приложения с одним сервером он может быть лишним, если задача спокойно решается обычными HTTP-маршрутами.

В каталоге gRPC важен как фундаментальный инфраструктурный проект: он показывает, как открытый код формирует способ общения сервисов.

Практический старт — сначала спроектировать маленький контракт и проверить обновления схемы, а уже потом переносить на gRPC критичные внутренние связи.

В реальном сервисном ландшафте gRPC часто выигрывает там, где команда хочет видеть контракт раньше реализации. Сначала обсуждаются методы, сообщения, ошибки и совместимость версий, а уже потом пишется код. Это дисциплинирует интеграции: клиент и сервер не договариваются неявно через случайный JSON, а опираются на формальную схему, которую можно генерировать и проверять.

Еще один практический плюс gRPC — хорошая проверяемость границ. Когда контракт хранится рядом с кодом, изменения можно обсуждать до выпуска, а несовместимые шаги становятся заметнее. Это помогает не только производительности, но и дисциплине между командами.