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
}