Implementación de aplicaciones con gRPC
Con Code Engine, puede configurar las aplicaciones para que se ejecuten como servidores gRPC para manejar llamadas de cliente aprovechando las características gRPC.
gRPC es una infraestructura moderna de llamada a procedimiento remoto (RPC) de código abierto que puede conectar servicios en y entre centros de datos. Proporciona una serialización binaria eficiente, modalidad continua bidireccional, equilibrio de carga para el cliente y los servidores, rastreo, comprobación de estado y autenticación. Para obtener más información, consulte la documentación degRPC.
Ventajas de utilizar gRPC
gRPC proporciona varias ventajas para facilitar las comunicaciones entre clientes y servidores. Un aspecto fundamental de gRPC es definir una interfaz clara que encapsula todos los métodos y parámetros disponibles para una invocación remota. En el lado del servidor, esta interfaz se implementa para manejar y responder a las solicitudes de cliente de forma efectiva.
Este enfoque de trabajar con gRPC con sus aplicaciones Code Engine ofrece ventajas.
-
Interoperatividad: los clientes y servidores gRPC pueden ejecutarse y comunicarse entre sí en diversos entornos. Por ejemplo, puede definir los servidores con el lenguaje Go, mientras que los clientes se definen en Java.
-
Serialización- gRPC utiliza almacenamientos intermedios de protocolo para la serialización de mensajes, que es más eficiente en términos de tamaño y velocidad, que utilizar JSON en las API HTTP.
-
Modalidad continua: gRPC da soporte a la modalidad continua bidireccional para que los clientes y servidores envíen y reciban mensajes simultáneamente a través de una única conexión.
-
Detección de errores- gRPC aplica un contrato de tipo fuerte entre el cliente y el servidor a través de los almacenamientos intermedios de protocolo (archivos
.proto
). Este contrato se asegura de que el cliente y el servidor acuerden interfaces y estructura de datos, lo que proporciona una mejor generación de código, validación y manejo de errores. -
Seguridad- gRPC da soporte a diversos métodos de autenticación y cifrado, incluido TLS mutuo, que proporciona una comunicación segura entre el cliente y el servidor.
Configuración de aplicaciones Code Engine para utilizar gRPC
gRPC está soportado para aplicaciones Code Engine a nivel de proyecto, lo que significa que la aplicación de servidor Code Engine gRPC solo puede servir tráfico a clientes que se ejecutan en el mismo proyecto.
Debe utilizar la CLI de Code Engine para configurar una aplicación gRPC de Code Engine.
Antes de empezar
Desde Code Engine:
- Configure su entorno de CLI de Code Engine.
- Crear un proyecto.
-
Cree y despliegue una aplicación con el mandato
ibmcloud ce application create
. Para indicar que esta aplicación da soporte a gRPC, que utiliza HTTP/2 como modalidad de transporte, debe especificar la opción--port
con el formato[NAME:]PORT
; por ejemplo,--port h2c:8080
. Cuando[NAME:]
esh2c
, el puerto utiliza HTTP/2 no cifrado. De forma predeterminada, Code Engine presupone que las apps escuchan las conexiones entrantes en el puerto8080
.En el ejemplo siguiente, utilice
myapp-grpcserver
como nombre de la aplicación de servidor y especifiqueicr.io/codeengine/grpc-server
como imagen a la que hacer referencia.ibmcloud ce application create --name myapp-grpcserver --port h2c:8080 --min-scale 1 --image icr.io/codeengine/grpc-server
-
Ejecute el mandato
application get
para visualizar los detalles sobre la aplicación.ibmcloud ce application get --name myapp-grpcserver
Salida de ejemplo
[...] OK Name: myapp-grpcserver ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Port: h2c:8080 [...]
Ahora que la app de servidor se ha creado y desplegado para utilizar gRPC, debe desplegar una aplicación cliente dentro del mismo proyecto para acceder al servidor con gRPC. Para obtener más información sobre el código de ejemplo de Code Engine
para desplegar un servidor gRPC y una aplicación cliente, consulte Ejemplo deCode Engine grpc
.
Las imágenes de ejemplo de Code Engine compiladas a partir del repositorio de ejemplos de IBM Cloud Code Engine en GitHub están disponibles en IBM Cloud® Container
Registry en el espacio de nombres público de icr.io/codeengine
.