Sobes.tech
Junior — Middle

Mi a különbség a szerveroldali adatfolyam-átvitel módja és az egyetlen hívás között a gRPC-ben?

sobes.tech MI

Válasz az MI-től

A gRPC-ben több adatátviteli mód különböztethető meg:

  • Egyszeri hívás (Unary RPC): a kliens egy kérést küld, és egy választ kap. Ez a klasszikus kérés-válasz modell.

  • Szerver streaming (Server Streaming RPC): a kliens egy kérést küld, és a szerver egy üzenetfolyammal válaszol. A kliens olvassa az üzeneteket, amint érkeznek, amíg a szerver be nem fejezi a folyamatot.

Különbségek:

  • Az egyszeri hívás során az adatcsere egyszer történik — kérés és válasz.
  • A szerver streaming esetén a szerver több üzenetet küldhet egy kérésre válaszul, ami hasznos nagy adatmennyiség vagy valós idejű frissítések továbbításához.

Példa Go nyelven (szerver streaming):

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
}