Nesta página, mostramos detalhes específicos do Cloud Run para desenvolvedores que querem usar o gRPC para conectar um serviço do Cloud Run a outros serviços, por exemplo, para fornecer uma comunicação simples e de alto desempenho entre microsserviços internos. É possível usar todos os tipos de gRPC, streaming ou unary, com o Cloud Run.
Os possíveis casos de uso incluem:
- Comunicação entre microsserviços internos.
- Altas cargas de dados (o gRPC usa buffers de protocolo (em inglês), que são até sete vezes mais rápidos do que as chamadas REST).
- Basta uma única definição de serviço simples. Não é necessário escrever uma biblioteca de cliente completa.
- Use gRPCs de streaming no servidor gRPC para criar aplicativos e APIs mais responsivos.
Para integrar seu serviço ao gRPC:
- Configure o serviço para usar HTTP/2 se você estiver usando o gRPC de streaming. HTTP/2 é o método de transporte para streaming de gRPC.
- Defina as mensagens de solicitação e as respostas em um arquivo proto e compile-as.
- Crie um servidor gRPC para processar solicitações e retornar respostas: ele precisa detectar a variável de ambiente
PORT
. - Crie um cliente que envie solicitações e processe respostas do servidor gRPC.
- Como opção, adicione uma autenticação.
- Crie e implante seu serviço.
Como configurar o serviço para usar HTTP/2
O Google recomenda configurar seu serviço para usar HTTP/2 se você usar o gRPC com o Cloud Run. Alguns recursos do gRPC simples funcionam sem o uso de HTTP/2. No entanto, muitos recursos do gRPC, como streaming e metadados, exigem HTTP/2.
Como definir e compilar mensagens em um arquivo proto
Não há itens extras ou específicos do Cloud Run para adicionar às suas definições de proto. Assim como qualquer outro uso do gRPC, você usa buffers de protocolo gRPC para definições de serviço e serialização de dados.
Como criar um cliente gRPC
Não há itens extras ou específicos do Cloud Run para adicionar a um cliente que usa o gRPC: siga os documentos do gRPC sobre como usar definições de serviço no código do cliente e os clientes de amostra fornecidos no Tutoriais do gRPC específicos de linguagem.
Escalonamento automático e balanceamento de carga
O Cloud Run usa balanceadores de carga gerenciados pelo Google que mantêm conexões separadas entre clientes e instâncias do Cloud Run. Com o gRPC, o escalonamento automático se comporta da seguinte maneira:
- As conexões gRPC de clientes terminam no balanceador de carga de borda. Ajustar as configurações de
KeepAlive
afeta apenas a conexão com o balanceador de carga, não as instâncias do Cloud Run. O cliente não reconhece quando uma instância é descartada. - Durante o escalonamento vertical, o balanceador de carga encerra as conexões enviando mensagens GOAWAY para as instâncias de back-end quando elas são encerradas.
- Durante o escalonamento horizontal, o balanceador de carga cria novas conexões com as instâncias de back-end. Todas essas operações são transparentes para os clientes.
- Durante o escalonamento automático, muitas instâncias podem ser iniciadas e multiplexadas em uma única conexão entre o cliente e o balanceador de carga do proxy.
- A simultaneidade é determinada pelo máximo de solicitações simultâneas por instância para mensagens. No streaming, cada fluxo é contado uma vez em relação ao máximo de solicitações simultâneas.
Como detectar solicitações gRPC em um serviço do Cloud Run
O único requisito especial para um servidor gRPC em execução no Cloud Run é detectar a porta especificada pela variável de ambiente PORT
, conforme mostrado no código a seguir:
Go
Como abrir uma conexão gRPC com um serviço
Para abrir uma conexão gRPC com um serviço e enviar mensagens gRPC, especifique o domínio do host, que é o URL do serviço do Cloud Run ou o domínio personalizado mapeado para esse serviço. a porta 443, que é a porta esperada para ser usada pelo gRPC.
Go
Como enviar solicitações gRPC sem autenticação
No exemplo a seguir, mostramos como enviar uma solicitação sem autenticação, usando uma conexão gRPC configurada conforme mencionado anteriormente.
Go
Como enviar solicitações gRPC com autenticação
No exemplo a seguir, mostramos como usar a autenticação entre serviços, se o serviço de chamada tiver permissão de invocador para o serviço de recebimento. Observe que esse código cria um cabeçalho de autorização que tem o token de identidade adequado: isso é obrigatório. As permissões necessárias e o cabeçalho de autorização estão descritos em detalhes na autenticação de serviço a serviço.
Go
Código de amostra para streaming gRPC
Para ver um código de amostra, consulte a implementação de RouteGuide
no
tutorial do básico do gRPC da
linguagem que você escolher. Ao usar o Go, por exemplo, consulte Como implementar o RouteGuide.