Sobes.tech
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
}