Compartilhar via


Uso de proxy gRPC de YARP

Introdução

gRPC é uma estrutura de RPC (Chamada de Procedimento Remoto) independente de linguagem e de alto desempenho. Ele é construído com base em HTTP/2 e pode ser proxiado através do YARP. Embora o YARP não precise estar ciente das mensagens gRPC, você precisa verificar se o protocolo HTTP correto está habilitado. O gRPC requer HTTP/2 e as chamadas gRPC falharão se o YARP não estiver configurado corretamente para enviar e receber solicitações HTTP/2.

Configurar os protocolos de entrada do YARP

gRPC requer HTTP/2 para a maioria dos cenários. HTTP/1.1 e HTTP/2 são habilitados por padrão em servidores ASP.NET Core (front-end do YARP), mas eles exigem https (TLS) para HTTP/2, portanto, o YARP precisa estar escutando em um URL https://.

HTTP/2 sobre http (não TLS) só tem suporte em Kestrel e requer configurações específicas. Para obter mais informações, consulte Serviços gRPC com ASP.NET Core.

Isso mostra a configuração de Kestrel para usar HTTP/2 por http (não TLS):

{
  "Kestrel": {
    "Endpoints": {
      "http": {
        "Url": "http://localhost:5000",
        "Protocols": "Http2"
      }
    }
  }
}

Configurar os protocolos de saída do YARP

O YARP negocia automaticamente HTTP/1.1 ou HTTP/2 para solicitações de proxy de saída, mas apenas para https (TLS). HTTP/2 sobre http (não TLS) requer configurações adicionais. Observe que os protocolos de saída são independentes dos de entrada. Por exemplo, https podem ser usados para a conexão de entrada e http para a saída, isso é chamado de terminação TLS. Para obter detalhes de configuração, consulte Configuração do cliente HTTP YARP.

A seguir, é mostrado como configurar a solicitação de proxy de saída para usar HTTP/2:

"cluster1": {
  "HttpRequest": {
    "Version": "2",
    "VersionPolicy": "RequestVersionExact"
  },
  "Destinations": {
    "cluster1/destination1": {
      "Address": "http://localhost:6000/"
    }
  }
},

gRPC-Web

gRPC-Web é um formato de fio alternativo para gRPC compatível com HTTP/1.1.

  • application/grpc - gRPC sobre HTTP/2 é o modo como o gRPC é geralmente usado.
  • application/grpc-web – o gRPC-Web modifica o protocolo do gRPC para ser compatível com o HTTP/1.1. O gRPC-Web pode ser usado em mais locais. O gRPC-Web pode ser usado por aplicativos de navegador e em redes sem suporte completo para HTTP/2. Não há suporte para dois recursos avançados do gRPC: streaming de cliente e streaming bidirecional.

gRPC-Web pode ser proxiado pela configuração padrão do YARP sem considerações especiais.