Junior — Middle
Care este diferența dintre modul de transmitere a datelor în streaming de server și o singură apelare în gRPC?
sobes.tech AI
Răspuns de la AI
În gRPC, se disting mai multe moduri de transmitere a datelor:
-
Apel unic (Unary RPC): clientul trimite o solicitare și primește un răspuns. Este modelul clasic de solicitare-răspuns.
-
Streaming de la server (Server Streaming RPC): clientul trimite o solicitare, iar serverul răspunde cu un flux de mesaje. Clientul citește mesajele pe măsură ce sosesc, până când serverul încheie fluxul.
Diferențe:
- În apelul unic, schimbul are loc o singură dată — solicitare și răspuns.
- În streamingul de la server, serverul poate trimite mai multe mesaje ca răspuns la o singură solicitare, ceea ce este util pentru transmiterea unor volume mari de date sau actualizări în timp real.
Exemplu în Go (streaming de la server):
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
}