Sobes.tech
Junior — Middle

V čem se liší režim přenosu dat serverového streamingu od jednorázového volání v gRPC?

sobes.tech AI

Odpověď od AI

V gRPC rozlišujeme několik režimů přenosu dat:

  • Jednorázový volání (Unary RPC): klient odešle jeden požadavek a obdrží jednu odpověď. Jedná se o klasický model požadavek-odpověď.

  • Streamování ze serveru (Server Streaming RPC): klient odešle požadavek a server odpoví proudem zpráv. Klient čte zprávy, jak přicházejí, dokud server nedokončí proud.

Rozdíly:

  • U jednorázového volání dochází k výměně pouze jednou — požadavek a odpověď.
  • U streamování ze serveru může server poslat více zpráv jako odpověď na jeden požadavek, což je užitečné pro přenos velkých objemů dat nebo aktualizací v reálném čase.

Příklad v Go (streamování ze serveru):

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
}