Junior — Middle
Wat is het verschil tussen de server-side streaming datatransmissiemodus en een enkele oproep in gRPC?
sobes.tech AI
Antwoord van AI
In gRPC worden verschillende overdrachtsmodi onderscheiden:
-
Eénmalige oproep (Unary RPC): de client stuurt één verzoek en ontvangt één antwoord. Dit is de klassieke request-response.
-
Server streaming (Server Streaming RPC): de client stuurt één verzoek, en de server antwoordt met een stroom van berichten. De client leest de berichten terwijl ze binnenkomen, totdat de server de stroom beëindigt.
Verschillen:
- Bij een éénmalige oproep vindt de uitwisseling slechts één keer plaats — verzoek en antwoord.
- Bij server streaming kan de server meerdere berichten sturen als antwoord op één verzoek, wat handig is voor het overdragen van grote hoeveelheden data of realtime updates.
Voorbeeld in Go (server 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
}