Sobes.tech
Junior — Middle

¿En qué se diferencia el modo de transmisión de datos en streaming del servidor respecto a una llamada única en gRPC?

sobes.tech AI

Respuesta de la IA

En gRPC, se distinguen varios modos de transmisión de datos:

  • Llamada única (Unary RPC): el cliente envía una solicitud y recibe una respuesta. Es la clásica solicitud-respuesta.

  • Streaming del servidor (Server Streaming RPC): el cliente envía una solicitud, y el servidor responde con un flujo de mensajes. El cliente lee los mensajes a medida que llegan, hasta que el servidor finaliza el flujo.

Diferencias:

  • En la llamada única, la comunicación ocurre una sola vez: solicitud y respuesta.
  • En el streaming del servidor, el servidor puede enviar varios mensajes en respuesta a una sola solicitud, lo cual es útil para transmitir grandes volúmenes de datos o actualizaciones en tiempo real.

Ejemplo en Go (streaming del servidor):

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
}