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
}