Proxy de gRPC
gRPC é um framework de RPC (Remote Procedure Call) de alto desempenho e independente de linguagem. É
Introdução
gRPC é um framework de RPC (Remote Procedure Call) de alto desempenho e independente de linguagem. É construído sobre o HTTP/2 e pode ser encaminhado pelo YARP. Embora o YARP não precise ter conhecimento das mensagens gRPC, é necessário garantir que o protocolo HTTP correto esteja habilitado. O gRPC requer HTTP/2, e as chamadas gRPC falharão se o YARP não estiver configurado corretamente para enviar e receber requisições HTTP/2.
Configurar os protocolos de entrada do YARP
O gRPC requer HTTP/2 na maioria dos cenários. O HTTP/1.1 e o HTTP/2 são habilitados por padrão em servidores ASP.NET Core (o front-end do YARP), mas eles exigem https (TLS) para HTTP/2, portanto o YARP precisa estar escutando em uma URL https://.
HTTP/2 sobre http (sem TLS) só é suportado no Kestrel e requer configurações específicas. Para mais informações, consulte gRPC services with ASP.NET Core.
Isto mostra como configurar o Kestrel para usar HTTP/2 sobre http (sem TLS):
JSON {
"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 as requisições de proxy de saída, mas apenas para https (TLS). HTTP/2 sobre http (sem TLS) requer configurações adicionais. Observe que os protocolos de saída são independentes dos de entrada. Por exemplo, https pode ser usado para a conexão
de entrada e http para a de saída; isso é chamado de encerramento de TLS (TLS termination). Para detalhes de
configuração, consulte YARP HTTP Client Configuration.
O exemplo a seguir mostra como configurar a requisição de proxy de saída para usar HTTP/2:
JSON"cluster1": {
"HttpRequest": {
"Version": "2",
"VersionPolicy": "RequestVersionExact"
},
"Destinations": {
"cluster1/destination1": {
"Address": "http://localhost:6000/"
}
}
},gRPC-Web
gRPC-Web é um formato alternativo de transmissão (wire-format) para gRPC compatível com HTTP/1.1.
application/grpc - gRPC sobre HTTP/2 é a forma típica de uso do gRPC. application/grpc-web - o gRPC-Web modifica o protocolo gRPC para ser compatível com HTTP/1.1. O gRPC-Web pode ser usado em mais lugares. O gRPC-Web pode ser usado por aplicativos de navegador e em redes sem suporte completo a HTTP/2. Dois recursos avançados do gRPC não são suportados: streaming de cliente e streaming bidirecional.
O gRPC-Web pode ser encaminhado pela configuração padrão do YARP sem nenhuma consideração especial.
O autor criou este artigo com o auxílio de IA. Saiba mais