Sobes.tech
Junior — Middle

V čom sa líši režim prenosu dát serverového streamingu od jednorazového volania v gRPC?

sobes.tech AI

Odpoveď od AI

V gRPC sa rozlišujú rôzne režimy prenosu dát:

  • Jednorazové volanie (Unary RPC): klient odošle jeden požiadavok a dostane jednu odpoveď. Ide o klasický model požiadavka-odpoveď.

  • Streamovanie zo servera (Server Streaming RPC): klient odošle požiadavok a server odpovie prúdom správ. Klient číta správy, ako prichádzajú, kým server neukončí prúd.

Rozdiely:

  • Pri jednorazovom volaní sa výmena uskutoční iba raz — požiadavka a odpoveď.
  • Pri streamovaní zo servera môže server poslať viac správ ako odpoveď na jeden požiadavok, čo je užitočné na prenos veľkých objemov dát alebo aktualizácií v reálnom čase.

Príklad v Go (streamovanie zo servera):

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
}