Back to questions
Junior — Middle
77
Чем отличается режим передачи данных серверного стриминга от однократного вызова в gRPC?
Companies where asked
kode.ru
Answer from AI
sobes.tech AI
В gRPC различают несколько режимов передачи данных:
-
Однократный вызов (Unary RPC): клиент отправляет один запрос серверу и получает один ответ. Это классический запрос-ответ.
-
Серверный стриминг (Server Streaming RPC): клиент отправляет один запрос, а сервер отвечает потоком сообщений. Клиент читает сообщения по мере их поступления, пока сервер не завершит поток.
Отличия:
- В однократном вызове обмен происходит один раз — запрос и ответ.
- В серверном стриминге сервер может отправлять несколько сообщений в ответ на один запрос, что удобно для передачи больших объемов данных или обновлений в реальном времени.
Пример на Go (серверный стриминг):
func (s *server) ListFeatures(req *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error {
for _, feature := range features {
if inRange(feature.Location, req) {
if err := stream.Send(feature); err != nil {
return err
}
}
}
return nil
}