Cloud Endpoints para gRPC

O gRPC é uma biblioteca RPC universal de código aberto de alto desempenho desenvolvida pelo Google. No gRPC, um aplicativo cliente pode chamar métodos diretamente em um aplicativo servidor de uma outra máquina, como se ela fosse um objeto local, facilitando a criação de aplicativos e serviços distribuídos.

Um dos principais benefícios de usar gRPC é a criação da documentação. Você pode usar sua configuração do serviço e arquivos de definição da interface da API para gerar documentação de referência para sua API. Consulte Visão geral do portal do desenvolvedor para mais informações.

Gerenciamento de API

O Cloud Endpoints trabalha com o Extensible Service Proxy (ESP) para fornecer gerenciamento de API.

Com o Endpoints para gRPC, é possível usar os recursos de gerenciamento de API do Endpoints para adicionar um Console de APIs, monitoramento, hospedagem, rastreamento, autenticação e muito mais aos seus serviços gRPC. Além disso, depois de especificar regras de mapeamento especiais, o ESP converte o JSON RESTful em HTTP em solicitações gRPC. Isso significa que é possível implantar um servidor gRPC gerenciado pelo Cloud Endpoints e chamar a API usando um cliente gRPC ou JSON/HTTP, proporcionando muito mais flexibilidade e facilidade de integração com outros sistemas.

gRPC Endpoints Service

Crie serviços gRPC para Cloud Endpoints em qualquer linguagem compatível com o gRPC. Descubra muito mais sobre o gRPC, inclusive guias de início rápido e tutoriais para criar servidores e clientes no site do gRPC.

Plataformas de computação compatíveis

O ESP é um projeto de código aberto e está disponível como:

  • um contêiner no Google Container Registry Consulte as notas da versão do ESP referentes à atual imagem do Docker.
  • código-fonte no GitHub Consulte o README do ESP para detalhes sobre como criar o ESP.

É possível executar o contêiner do ESP nos produtos a seguir:

Para mais informações sobre como implantar a API e o ESP nas plataformas de computação do GCP, consulte Como implantar o back-end da API.

Definição e configuração de serviço

O gRPC tem como base a ideia de definir um serviço e especificar os métodos que podem ser chamados remotamente com parâmetros e tipos de retorno deles. Por padrão, o gRPC usa buffers de protocolo como a linguagem IDL (Interface Definition Language) para descrever a interface do serviço e a estrutura das mensagens de payload.

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

Para usar o gRPC com o Cloud Endpoints, forneça uma configuração de serviço com a definição do serviço. Isso define o comportamento de ambiente de execução do serviço, inclusive a autenticação, as APIs incluídas no serviço, os mapeamentos das solicitações HTTP para métodos gRPC e as configurações especiais do Cloud Endpoints.

Transcodificação

O Cloud Endpoints fornece conversão de protocolo para serviços gRPC, para que os clientes possam usar HTTP/JSON na comunicação com um serviço gRPC por meio do Extensible Service Proxy.

O caso de uso mais comum é a comunicação dos clientes de navegador com servidores gRPC sem suporte especial de bibliotecas do servidor gRPC. O Cloud Endpoints fornece um mecanismo para mapear solicitações HTTP para métodos do gRPC como parte da configuração do serviço.

Você pode saber mais sobre isso em Como transcodificar HTTP/JSON em gRPC.

Limitações

Os seguintes recursos do gRPC ainda não são compatíveis com o Cloud Endpoints:

  • compactação de payload
  • qualquer IDL que não é buffer de protocolo

O Endpoints não é compatível com ambientes do App Engine para serviços gRPC, apenas o GKE e o Compute Engine são compatíveis, assim como o Cloud Run (Beta).

A seguir

  • Siga um de nossos tutoriais para ter um serviço gRPC simples funcionando com o Cloud Endpoints no ambiente de sua escolha.
  • Descubra como configurar um serviço gRPC para Cloud Endpoints.
  • Explore amostras. A amostra getting-started-grpc está disponível no GitHub nas seguintes linguagens:
  • A amostra de bookstore está disponível nas seguintes linguagens: