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
}