Sobes.tech
Junior — Middle

gRPC'da serverdan ma'lumot uzatish rejimi va yagona chaqiriq o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

gRPC'da bir nechta ma'lumot uzatish rejimlari ajratiladi:

  • Bir martalik chaqiriq (Unary RPC): mijoz bir so'rov yuboradi va bir javob oladi. Bu klassik so'rov-javob.

  • Server strimingi (Server Streaming RPC): mijoz bir so'rov yuboradi va server javob sifatida ma'lumotlar oqimini yuboradi. Mijoz kelayotgan xabarlarni o'qiydi, server oqimini tugatguniga qadar.

Farqlar:

  • Bir martalik chaqiriqda, almashinish faqat bir marta bo'ladi — so'rov va javob.
  • Server strimingida, server bitta so'rovga javoban bir nechta xabar yuborishi mumkin, bu katta ma'lumotlarni yoki real vaqt yangilanishlarini uzatishda qulay.

Go tilida misol (server strimingi):

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
}