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 funciona com o Extensible Service Proxy (ESP) ou com o Extensible Service Proxy V2 Beta (ESPv2 Beta) para fornecer o gerenciamento de APIs.

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 e o ESPv2 Beta traduzem o JSON RESTful em HTTP para 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 e o ESPv2 Beta são projetos de código aberto e estão disponíveis nas seguintes maneiras:

  • um contêiner no Google Container Registry
  • código-fonte no GitHub
  • Consulte o README do ESP (em inglês) para detalhes sobre como criar o ESP.
  • Consulte o README do ESPv2 Beta (em inglês) para detalhes sobre como criar no ESPv2 Beta.

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

É possível executar o contêiner do ESPv2 Beta nestes locais:

  • Cloud Run
  • Cloud Run for Anthos
  • GKE;
  • Compute Engine
  • Kubernetes

Esses recursos estão na versão Beta. Consulte Sobre o Cloud Endpoints para saber mais.

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 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 no ESP ou no ESPv2 Beta.

O caso de uso mais comum é a comunicação dos clientes de navegador com servidores gRPC sem suporte especial de bibliotecas de cliente 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: