Junior — Middle
Quelle est la différence entre le mode de transmission de données en streaming serveur et un appel unique dans gRPC?
sobes.tech IA
Réponse de l'IA
Dans gRPC, plusieurs modes de transmission de données sont distingués:
-
Appel unique (Unary RPC): le client envoie une requête et reçoit une réponse. C'est la requête-réponse classique.
-
Streaming côté serveur (Server Streaming RPC): le client envoie une requête, et le serveur répond avec un flux de messages. Le client lit les messages au fur et à mesure qu'ils arrivent, jusqu'à ce que le serveur termine le flux.
Différences:
- Dans l'appel unique, l'échange se produit une seule fois — requête et réponse.
- Dans le streaming côté serveur, le serveur peut envoyer plusieurs messages en réponse à une seule requête, ce qui est pratique pour transmettre de grands volumes de données ou des mises à jour en temps réel.
Exemple en Go (streaming côté serveur):
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
}