Sobes.tech
Junior — Middle

Ի՞նչն է տարբերվում սերվերային հոսքային տվյալների փոխանցման ռեժիմից և gRPC-ում մեկանգամյա զանգից։

sobes.tech AI

Պատասխան AI-ից

gRPC-ում տարբեր տվյալների փոխանցման ռեժիմներ են տարբերակվում:

  • Միայն մեկ անգամ կանչ (Unary RPC): հաճախորդը ուղարկում է մեկ հարցում և ստանում մեկ պատասխան: Սա դասական հարցում-պատասխան մոդել է:

  • Սերվերի հոսք (Server Streaming RPC): հաճախորդը ուղարկում է հարցում, և սերվերը պատասխանում է հաղորդագրությունների հոսքով: Հաճախորդը կարդում է հաղորդագրությունները, ինչպես որ դրանք գալիս են, մինչև սերվերը ավարտի հոսքը:

Տարբերություններ՝

  • Միայն մեկ անգամ կանչում, փոխանակումը տեղի է ունենում մեկ անգամ՝ հարցում և պատասխան:
  • Սերվերի հոսքում, սերվերը կարող է ուղարկել մի քանի հաղորդագրություն մեկ հարցման պատասխանով, ինչը հարմար է մեծ տվյալների հոսքերի կամ իրական ժամանակի թարմացումների համար:

Օրինակ՝ Go-ում (սերվերի հոսք)

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
}