Cloud Endpoints para gRPC

gRPC es un framework de RPC universal de alto rendimiento y de código abierto desarrollado por Google. En gRPC, una aplicación cliente puede llamar directamente a métodos de una aplicación de servidor en otra máquina como si fuera un objeto local, lo que facilita la creación de aplicaciones y servicios distribuidos.

Gestión de APIs

Endpoints funciona con el proxy de servicios extensible (ESP) o con el proxy de servicios extensible V2 (ESPv2) para proporcionar gestión de APIs.

Con Endpoints para gRPC, puedes usar las funciones de gestión de APIs de Endpoints para añadir una consola de APIs, monitorización, alojamiento, seguimiento, autenticación y más a tus servicios gRPC. Además, una vez que especifiques reglas de asignación especiales, ESP y ESPv2 traducirán JSON RESTful a través de HTTP en solicitudes gRPC. Esto significa que puedes desplegar un servidor gRPC gestionado por Endpoints y llamar a su API mediante un cliente gRPC o JSON/HTTP, lo que te ofrece mucha más flexibilidad y facilidad de integración con otros sistemas.

Servicio de endpoints gRPC

Puedes crear servicios gRPC para Endpoints en cualquier idioma compatible con gRPC. Puedes consultar mucha más información sobre gRPC, incluidas guías de inicio rápido y tutoriales para crear servidores y clientes, en el sitio de gRPC.

Plataformas de computación compatibles

ESP y ESPv2 son proyectos de software libre y están disponibles de las siguientes formas:

Puedes ejecutar el contenedor ESP en lo siguiente:

Puedes ejecutar el contenedor de ESPv2 en lo siguiente:

  • Cloud Run
  • Servicio de Knative
  • GKE
  • Compute Engine
  • Kubernetes

Consulta Acerca de Cloud Endpoints para obtener más información.

Consulta Implementar el backend de la API para obtener información sobre cómo implementar tu API y el proxy de servicio extensible en plataformas de computación de Google Cloud .

Definición y configuración del servicio

gRPC se basa en la idea de definir un servicio, especificando los métodos a los que se puede llamar de forma remota con sus parámetros y tipos de retorno. De forma predeterminada, gRPC usa buffers de protocolo como lenguaje de definición de interfaz (IDL) para describir tanto la interfaz de servicio como la estructura de los mensajes 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 gRPC con Endpoints, debes proporcionar una configuración de servicio junto con la definición del servicio. De esta forma, se configura el comportamiento en tiempo de ejecución de tu servicio, incluida la autenticación, las APIs incluidas en el servicio, las asignaciones de solicitudes HTTP a métodos gRPC y los ajustes especiales de Cloud Endpoints.

Transcodificación

Endpoints proporciona traducción de protocolos para tus servicios gRPC, lo que permite a los clientes usar HTTP/JSON para comunicarse con un servicio gRPC a través de ESP o ESPv2.

El caso práctico más habitual es permitir que los clientes del navegador se comuniquen con servidores gRPC sin que las bibliotecas de cliente de gRPC tengan que ofrecer asistencia especial. Endpoints proporciona un mecanismo para asignar solicitudes HTTP a métodos gRPC como parte de la configuración de servicios.

Puedes consultar más información sobre este tema en el artículo Transcodificar HTTP/JSON a gRPC.

Limitaciones

Las siguientes funciones de gRPC aún no se admiten en Endpoints:

  • Compresión de la carga útil
  • Cualquier otro IDL que no sea un búfer de protocolo

Además, Endpoints solo admite servicios gRPC para GKE, Compute Engine y Cloud Run (beta). Endpoints no admite servicios gRPC en entornos de App Engine.

Siguientes pasos

  • Sigue uno de nuestros tutoriales para poner en marcha un servicio gRPC sencillo con Cloud Endpoints en el entorno que elijas.
  • Consulta cómo configurar un servicio gRPC para Cloud Endpoints
  • Explora las muestras. El ejemplo getting-started-grpc está disponible en GitHub en los siguientes idiomas:
  • El ejemplo de librería está disponible en los siguientes idiomas: