La Red de Conocimientos Pedagógicos - Currículum vitae - Cuatro servicios del marco golang-GRPC

Cuatro servicios del marco golang-GRPC

En gRPC, una aplicación cliente puede llamar directamente a métodos de otra aplicación de servidor en una máquina diferente, al igual que llamar a objetos locales, lo que le facilita la creación de aplicaciones y servicios distribuidos. Al igual que muchos sistemas RPC, gRPC se basa en el concepto de definir servicios y especificar métodos que se pueden llamar de forma remota (incluidos parámetros y tipos de retorno). Implemente esta interfaz en el servidor y ejecute un servidor gRPC para manejar las llamadas de los clientes. Hay un código auxiliar en el cliente que funciona igual que en el servidor.

Los clientes y servidores de gRPC pueden ejecutarse e interactuar en una variedad de entornos, desde servidores dentro de Google hasta su propia computadora portátil, y pueden escribirse en cualquier idioma admitido por gRPC. Por lo tanto, puede crear fácilmente un servidor gRPC en Java y clientes en Go, Python y Ruby. Además, la última API de Google tendrá una versión gRPC de la interfaz, lo que le permitirá integrar fácilmente la funcionalidad de Google en sus aplicaciones.

gRPC utiliza buffers de protocolo de forma predeterminada, que es un mecanismo maduro de serialización de datos estructurados abierto por Google (por supuesto, también se pueden usar otros formatos de datos como JSON). Proto3 es un nuevo tipo de búfer de protocolo con una sintaxis liviana y simplificada, algunas características nuevas útiles y soporte para más lenguajes nuevos. Actualmente, se han lanzado versiones beta para Java y C++, y se han lanzado versiones alfa para JavaNano (Android Java. La biblioteca de código fuente de Github del búfer de protocolo es compatible con Ruby, y la biblioteca de código fuente de golang/protobuf Github tiene un generador para Go). idioma. Se está desarrollando soporte para más idiomas.

Con gRPC, podemos definir servicios en un archivo proto . a la vez e implementar clientes y servidores en cualquier idioma que lo admita. En cambio, se pueden utilizar en una variedad de entornos, desde los servidores de Google hasta su propia tableta: GRPC le ayuda a resolver las complejidades de la comunicación entre diferentes idiomas y entornos. Otros beneficios del uso de buffers de protocolo incluyen números de secuencia eficientes, IDL simple y actualizaciones de interfaz sencillas.

Ahora echemos un vistazo más de cerca a lo que sucede cuando un cliente gRPC llama a un método en un servidor gRPC. No discutimos los detalles de implementación. Puede encontrar más detalles sobre los detalles de implementación en nuestras páginas específicas del idioma.

Primero, veamos la forma más simple de RPC: el cliente envía una solicitud y obtiene una respuesta.

El RPC de transmisión del lado del servidor es igual que nuestro ejemplo simple, excepto que devuelve un flujo de respuesta después de obtener la información de la solicitud del cliente. Una vez enviadas todas las respuestas, los detalles del estado del servidor (código de estado e información de estado opcional) y los metadatos de seguimiento opcionales se envían al cliente, completando el trabajo del servidor. El cliente también completa su trabajo después de recibir respuestas de todos los servidores.

El RPC de transmisión del lado del cliente es básicamente el mismo que nuestro ejemplo simple, excepto que el cliente envía un flujo de solicitudes al servidor en lugar de la solicitud única original. Después de recibir todas las solicitudes del cliente, el servidor generalmente (pero no necesariamente) envía una respuesta que contiene detalles de su estado y datos de seguimiento opcionales.

RPC de flujo bidireccional, la llamada la inicia el cliente que llama al método y el servidor recibe los metadatos del cliente, el nombre del método y la fecha límite. El servidor puede optar por devolver sus metadatos iniciales o esperar a que el cliente envíe la solicitud. Lo que sucede a continuación depende de la aplicación, ya que el cliente y el servidor pueden leer y escribir en cualquier orden; las operaciones en estos flujos son completamente independientes. Por ejemplo, el servidor puede esperar hasta recibir todos los mensajes del cliente antes de escribir una respuesta, o el servidor y el cliente pueden ser como "ping pong": el servidor envía una respuesta después de recibir la solicitud y luego el cliente envía otra solicitud según la respuesta, etcétera.

Clonar e instalar el código base de grpc-go ejecutando el siguiente comando:

Descargar el paquete fuente de protobuf

Instalar golang-protobuf

Capítulo El primer paso es utilizar buffers de protocolo para definir los tipos de solicitudes y respuestas de métodos y servicios gRPC.

Para definir un servicio, este debe estar en.

Archivo de prototipo:

Luego defina el método rpc en el servicio y especifique los tipos de solicitud y respuesta. gRPC permite definir cuatro tipos de métodos de servicio.

Servicio. El archivo prototipo es el siguiente: