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
}