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
}