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
}