gRPC изнутри: Protobuf, стриминг, deadlines
gRPC даёт мощные фичи (стриминг, дедлайны, генерацию клиентов), но требует понимания базовых концепций.
Почему это важно: Без понимания ключевых механизмов gRPC легко получить хрупкий, медленный и сложный в отладке сервис.
Главная идея
Protobuf-схема — источник истины. Из неё генерируются и сервер, и клиенты на любых языках.
Как это выглядит на практике
- Команда описывает .proto файл: сообщения и сервисы.
- protoc генерирует код для Go, TypeScript, Python.
- Server и клиенты используют один и тот же контракт.
- При обновлении контракта обе стороны получают типобезопасные API.
Что происходит под капотом
- Unary RPC: запрос → ответ, как REST.
- Server streaming: один запрос → поток ответов.
- Client streaming: поток запросов → один ответ.
- Bidirectional streaming: два потока в обе стороны.
- Deadlines (timeouts) — обязательная часть gRPC, передаются между сервисами автоматически.
Типичные ошибки и заблуждения
- Ошибка: gRPC работает только в Go. Поддерживаются все основные языки.
- Ошибка: streaming = WebSocket. Это разные механизмы и протоколы.
- Ошибка: deadlines необязательны. Без них один медленный сервис вешает всю систему.
- Ошибка: Protobuf — просто формат. Это контракт + бинарная сериализация + версионирование.
Ключевые выводы
- Protobuf — источник истины для контракта.
- 4 типа RPC покрывают почти все use cases.
- Deadlines обязательны для отказоустойчивости.
- Кодогенерация устраняет рассинхронизации клиента и сервера.
Термины урока
Связь с работой backend-разработчика
gRPC — стандарт de facto для service-to-service в крупных компаниях. Опыт с ним сильно повышает ценность backend-разработчика на рынке.
Мини-разбор реальной ситуации
Команда забыла настроить deadlines для внутренних gRPC-вызовов. При сбое одного сервиса все остальные начали накапливать висячие вызовы и упали по нехватке памяти.
Что запомнить
- Protobuf — это контракт.
- Deadlines — обязательны.
- Streaming решает специфические задачи.
Итог
gRPC — мощный инструмент для high-performance backend, но требует понимания базовых механизмов.
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.