Junior — Middle
Worin besteht der Unterschied zwischen dem Server-Streaming-Datenübertragungsmodus und einem einzelnen Aufruf in gRPC?
sobes.tech KI
Antwort von AI
In gRPC werden verschiedene Datenübertragungsmodi unterschieden:
-
Einmaliger Aufruf (Unary RPC): Der Client sendet eine Anfrage und erhält eine Antwort. Dies ist die klassische Anfrage-Antwort-Interaktion.
-
Server-Streaming (Server Streaming RPC): Der Client sendet eine Anfrage, und der Server antwortet mit einem Datenstrom. Der Client liest die Nachrichten, sobald sie eintreffen, bis der Server den Strom beendet.
Unterschiede:
- Beim einmaligen Aufruf findet der Austausch nur einmal statt — Anfrage und Antwort.
- Beim Server-Streaming kann der Server mehrere Nachrichten als Antwort auf eine einzelne Anfrage senden, was nützlich ist, um große Datenmengen oder Echtzeit-Updates zu übertragen.
Beispiel 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
}