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
}