Junior — Middle
Каква е разликата между режима на предаване на данни чрез сървърно стриймване и еднократното извикване в gRPC?
sobes.tech AI
Отговор от 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
}