Sobes.tech
Junior — Middle

Kuo skiriasi serverio srauto duomenų perdavimo režimas nuo vienkartinio skambučio gRPC?

sobes.tech AI

Atsakymas iš AI

gRPC skiria keletą duomenų perdavimo režimų:

  • Vienkartinis kvietimas (Unary RPC): klientas siunčia vieną užklausą ir gauna vieną atsakymą. Tai klasikinis užklausos-atsakymo modelis.

  • Serverio srautas (Server Streaming RPC): klientas siunčia vieną užklausą, o serveris atsako duomenų srautu. Klientas skaito žinutes, kaip jos atkeliauja, kol serveris užbaigia srautą.

Skirtumai:

  • Vienkartinio kvietimo metu keitimasis vyksta tik kartą — užklausa ir atsakymas.
  • Serverio sraute, serveris gali siųsti kelias žinutes kaip atsakymą į vieną užklausą, kas naudinga perduodant didelius duomenų kiekius arba realaus laiko atnaujinimus.

Pavyzdys Go kalba (serverio srautas):

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
}