Sobes.tech
Junior — Middle

Koja je razlika između režima server-side streaminga podataka i jednog poziva u gRPC?

sobes.tech АИ

Одговор од АИ

U gRPC-u, razlikuju se različiti režimi prenosa podataka:

  • Jednokratni poziv (Unary RPC): klijent šalje jedan zahtev i prima jedan odgovor. Ovo je klasičan model zahtev-odgovor.

  • Streamovanje sa servera (Server Streaming RPC): klijent šalje zahtev, a server odgovara tokom poruka. Klijent čita poruke onoliko koliko ih stigne, dok server ne završi tok.

Razlike:

  • U jednokratnom pozivu, razmena se dešava jednom — zahtev i odgovor.
  • U streamovanju sa servera, server može poslati više poruka kao odgovor na jedan zahtev, što je korisno za prenos velikih količina podataka ili ažuriranja u realnom vremenu.

Primer u Go-u (streamovanje sa 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
}