хватайте -30% на все до 30 ноября
Открытые уроки

Основы gRPC в Go

В этом уроке:
  • 00:00 — Введение
  • 00:36 — Разница HTTP/1.1 и HTTP/2
  • 06:19 — Protobuf
  • 23:02 — Взаимодействие по gRPC
  • 33:35 — Работаем с gRPC на практике
  • 49:59 — gRPC плагины

Урок знакомит с основами gRPC в языке программирования Go — от установки до клиент-серверного взаимодействия. В уроке ты узнаешь, как gRPC используется для эффективной передачи data по сети, как происходит сериализация структур данных через Protocol Buffers, и как генерируется код с помощью компилятора proto.

gRPC работает поверх HTTP/2 и предлагает низкую задержку и строгую типизацию сообщений. Протокол gRPC — это высокопроизводительное средство remote procedure call (RPC), где каждый вызов и ответ обрабатываются в бинарном формате, что делает их более компактными и эффективными по сравнению с традиционными REST или JSON запросами. Такой подход особенно полезен для клиент-сервер приложений, где важна производительность и минимальная задержка при взаимодействии между сервисами.

Структуры сообщений описываются в. proto файле, что делает их совместимыми с различными языками программирования, включая Java, Python, Go и другие. Это позволяет разрабатывать сервисы, которые легко интегрируются между собой, независимо от того, на какой платформе они реализованы. В процессе разработки API через Protocol Buffers ты создаёшь четкое определение функций, которые могут быть вызваны удалённо.

Ты научишься:
  • Проектировать и создавать API через Protocol Buffers.
  • Реализовывать надёжное взаимодействие между сервисами с поддержкой потоковой передачи (streaming) и обработки ошибок.
  • Встраивать gRPC в web-среду и использовать его в production микросервисной архитектуре.

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

Для тех, кто привык работать с REST-сервисами, этот урок покажет преимущества gRPC и Protobuf: компактность сообщений, высокую производительность и удобство описания функций, которые вызываются удалённо. В отличие от REST, gRPC отправляет данные в бинарном формате, что значительно ускоряет обработку запросов и ответов, особенно при большом объёме информации.

Во время разработки ты создаёшь файлы proto, описываешь структуры и функции, а компилятор protobuf генерирует код, который может быть использован в различных языках. Это позволяет быстро получить рабочий сервер, используя github или другие ресурсы для интеграции в твой проект.

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

Также важно понимать, как gRPC интегрируется с web-приложениями. Используя HTTP/2, gRPC поддерживает потоковую передачу и обработку нескольких запросов одновременно. Это позволяет создавать сервисы, которые быстрее обрабатывают data, поддерживают конфиденциальность и эффективность взаимодействия между клиентом и сервером.

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

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

В результате, после прохождения урока, ты сможешь:
  • Разрабатывать сервисы, использующие remote procedure call (RPC) с высокой производительностью.
  • Создавать API через Protocol Buffers для различных языков.
  • Интегрировать gRPC в web и сетевые приложения, заменяя REST и JSON для более эффективной передачи данных.
  • Использовать streaming, серверный и клиентский вызовы, обеспечивая надежное взаимодействие между клиентом и сервером.

Автор урока — Леонид Ченский, Team lead в Ozon tech. Урок ориентирован на практическое использование gRPC, protobuf и современных сетевых технологий, что делает его особенно полезным для разработчиков, которые хотят быстрее создавать эффективные и надежные сервисы.
Микросервисы