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
}