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
}