Sobes.tech
Junior — Middle

Qual é a diferença entre o modo de transmissão de dados em streaming do servidor e uma chamada única no gRPC?

sobes.tech IA

Resposta da IA

No gRPC, distinguem-se vários modos de transmissão de dados:

  • Chamada única (Unary RPC): o cliente envia uma solicitação e recebe uma resposta. É a clássica solicitação-resposta.

  • Streaming do servidor (Server Streaming RPC): o cliente envia uma solicitação, e o servidor responde com um fluxo de mensagens. O cliente lê as mensagens à medida que chegam, até que o servidor finalize o fluxo.

Diferenças:

  • Na chamada única, a troca ocorre uma única vez — solicitação e resposta.
  • No streaming do servidor, o servidor pode enviar várias mensagens em resposta a uma única solicitação, o que é útil para transmitir grandes volumes de dados ou atualizações em tempo real.

Exemplo em Go (streaming do 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
}