Junior — Middle
Czym różni się tryb przesyłania danych serwera od pojedynczego wywołania w gRPC?
sobes.tech AI
Odpowiedź od AI
W gRPC wyróżnia się kilka trybów przesyłania danych:
-
Wywołanie jednokrotne (Unary RPC): klient wysyła jedno żądanie i otrzymuje jedną odpowiedź. To klasyczne żądanie-odpowiedź.
-
Strumieniowanie serwera (Server Streaming RPC): klient wysyła jedno żądanie, a serwer odpowiada strumieniem wiadomości. Klient odczytuje wiadomości w miarę ich przychodzenia, aż serwer zakończy strumień.
Różnice:
- W wywołaniu jednokrotnym wymiana odbywa się raz — żądanie i odpowiedź.
- W strumieniowaniu serwera, serwer może wysłać wiele wiadomości w odpowiedzi na jedno żądanie, co jest przydatne do przesyłania dużych ilości danych lub aktualizacji w czasie rzeczywistym.
Przykład w Go (strumieniowanie serwera):
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
}