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