Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: grpc, streaming, rpc, golang

Чем gRPC bidirectional stream отличается от обычного unary RPC? Приведи пример кейса.

Проверяет знание gRPC и понимание, когда нужен потоковый режим.

Короткий ответ

Unary RPC — клиент делает один запрос и получает один ответ. Bidirectional streaming — обе стороны могут отправлять данные параллельно, пока соединение открыто. Применяется для чатов, realtime-обновлений и IoT.

Длинный ответ

Unary RPC:

  • Запрос → Ответ.

  • Простая модель, похожа на HTTP.

Bidirectional stream:

  • У клиента и сервера есть потоки.

  • Отправка и получение происходят независимо.

  • Соединение поддерживается открытым.

Пример кейса:

  • Чат — клиент отправляет сообщения и параллельно получает новые.

  • Трекер геопозиции — клиент стримит координаты, сервер отвечает командами.

Пример Go-кода (фрагмент):

stream, _ := client.Chat(ctx)
go func() {
		for {
				msg, _ := stream.Recv()
				fmt.Println("Server:", msg)
		}
}()
stream.Send(&Message{Text: "Привет"})

Вывод: Unary RPC — для простых запросов, bidi-stream — для realtime и асинхронного общения.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#grpc

#streaming

#rpc

#golang

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.