Sobes.tech
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
}