Cloud Endpoints para gRPC

O gRPC é um framework de RPC universal de código aberto e de alto desempenho, desenvolvido pela Google. No gRPC, uma aplicação cliente pode chamar diretamente métodos numa aplicação servidor numa máquina diferente como se fosse um objeto local, o que facilita a criação de aplicações e serviços distribuídos.

Gestão de APIs

O Endpoints funciona com o proxy de serviço extensível (ESP) ou o proxy de serviço extensível V2 (ESPv2) para fornecer gestão de APIs.

Com os Endpoints para gRPC, pode usar as capacidades de gestão de APIs dos Endpoints para adicionar uma consola de API, monitorização, alojamento, rastreio, 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 traduzem JSON RESTful sobre HTTP em pedidos gRPC. Isto significa que pode implementar um servidor gRPC gerido pelo Endpoints e chamar a respetiva API através de um cliente gRPC ou JSON/HTTP, o que lhe dá muito mais flexibilidade e facilidade de integração com outros sistemas.

Serviço de pontos finais gRPC

Pode criar serviços gRPC para Endpoints em qualquer idioma suportado pelo gRPC. Pode saber muito mais sobre o gRPC, incluindo inícios rápidos e tutoriais para criar servidores e clientes, no site do gRPC.

Plataformas de computação suportadas

O ESP e o ESPv2 são projetos de código aberto e estão disponíveis para si das seguintes formas:

Pode executar o contentor do ESP no seguinte:

Pode executar o contentor do ESPv2 no seguinte:

  • Cloud Run
  • Knative Serving
  • GKE
  • Compute Engine
  • Kubernetes

Para mais informações, consulte o artigo Acerca do Cloud Endpoints.

Consulte o artigo Implementar o back-end da API para ver informações sobre a implementação da sua API e do proxy de serviço extensível em Google Cloud plataformas de computação.

Definição e configuração do serviço

O gRPC baseia-se na ideia de definir um serviço, especificando os métodos que podem ser chamados remotamente com os respetivos parâmetros e tipos de retorno. Por predefinição, o gRPC usa buffers de protocolo como a linguagem de definição de interface (IDL) para descrever a interface de serviço e a estrutura das mensagens de carga útil.

// 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 os Endpoints, tem de fornecer uma configuração do serviço juntamente com a definição do serviço. Esta configuração define o comportamento de tempo de execução do seu serviço, incluindo a autenticação, as APIs incluídas no serviço, os mapeamentos de pedidos HTTP para métodos gRPC e as definições especiais do Cloud Endpoints.

Transcodificação

Os endpoints fornecem tradução de protocolos para os seus serviços gRPC, o que permite aos clientes usar HTTP/JSON para comunicar com um serviço gRPC através do ESP ou ESPv2.

O exemplo de utilização mais comum é permitir que os clientes do navegador comuniquem com servidores gRPC sem suporte especial das bibliotecas cliente gRPC. O Endpoints oferece um mecanismo para mapear pedidos HTTP para métodos gRPC como parte da configuração do serviço.

Pode saber mais acerca deste assunto no artigo Transcodificação de HTTP/JSON para gRPC.

Limitações

As seguintes funcionalidades gRPC ainda não são suportadas nos Endpoints:

  • Compressão de payload
  • Qualquer IDL que não seja buffers de protocolo

Além disso, o Endpoints só suporta serviços gRPC para o GKE, o Compute Engine e o Cloud Run (beta). O Endpoints não suporta serviços gRPC para ambientes do App Engine.

O que se segue?

  • Siga um dos nossos tutoriais para ter um serviço gRPC simples a funcionar com o Cloud Endpoints no ambiente da sua escolha
  • Saiba como configurar um serviço gRPC para o Cloud Endpoints
  • Explore exemplos. O exemplo getting-started-grpc está disponível no GitHub nos seguintes idiomas:
  • O exemplo da livraria está disponível nos seguintes idiomas: