Junior — Middle
Kā atšķiras servera straumēšanas datu pārraides režīms no vienreizējas izsaukšanas gRPC?
sobes.tech AI
Atbilde no AI
gRPC atšķir vairākus datu pārraides režīmus:
-
Vienreizējs izsaukums (Unary RPC): klients nosūta vienu pieprasījumu un saņem vienu atbildi. Tas ir klasiskās pieprasījuma-atbildes modelis.
-
Servera straumēšana (Server Streaming RPC): klients nosūta vienu pieprasījumu, un serveris atbild ar ziņojumu plūsmu. Klients lasa ziņojumus tiklīdz tie ienāk, līdz serveris pabeidz plūsmu.
Atšķirības:
- Vienreizējā izsaukumā apmaiņa notiek tikai vienu reizi — pieprasījums un atbilde.
- Servera straumēšanā, serveris var nosūtīt vairākus ziņojumus kā atbildi uz vienu pieprasījumu, kas ir noderīgi lielu datu apjomu vai reāllaika atjauninājumu pārraidē.
Piemērs Go valodā (servera straumēšana):
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
}