Junior — Middle
Kuidas erineb serveripoolse voogedastuse andmeedastuse režiim ühekorra kutsest gRPC-s?
sobes.tech AI
Vastus AI-lt
gRPC-s on erinevad andmeedastamise režiimid:
-
Ühekordne kõne (Unary RPC): klient saadab ühe päringu ja saab ühe vastuse. See on klassikaline päring-vastus mudel.
-
Serveri voog (Server Streaming RPC): klient saadab ühe päringu ja server vastab andmevooga. Klient loeb sõnumeid nii palju kui need jõuavad, kuni server lõpetab voo.
Erinevused:
- Ühekordse kõne puhul toimub vahetamine ainult korra — päring ja vastus.
- Serveri voos võib server saata mitu sõnumit ühe päringu kohta, mis on kasulik suurema andmemahtude või reaalajas uuenduste edastamiseks.
Näide Go keeles (serveri voog):
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
}