Domine a fondo el elegante método de depuración de la interfaz gRPC

Actualmente, existen herramientas de gestión y depuración de interfaz muy limitadas compatibles con  las interfaces gRPC  en el mercado, y gRPC ha sido ampliamente utilizado en arquitecturas de microservicios, y es previsible que se vuelva cada vez más popular.

Como herramienta de administración de interfaz líder en la industria, Apifox ha lanzado la capacidad de depuración de interfaz gRPC , que es totalmente compatible con los siguientes cuatro tipos de llamadas:

  • Unario: llamada unaria
  • Streaming del servidor: flujo del servidor
  • Transmisión de clientes: flujo de clientes
  • Transmisión bidireccional: flujo bidireccional

Tal vez no esté familiarizado con la interfaz gRPC, ¡así que primero deberíamos tener una breve comprensión!

¿Qué es gRPC?

gRPC es un marco moderno de llamadas a procedimientos remotos (llamadas a procedimientos remotos) RPC  de código abierto y alto rendimiento  desarrollado por Google . Tiene buena compatibilidad y puede ejecutarse en múltiples entornos de desarrollo. 

Escenarios de aplicación de gRPC

En comparación con la interfaz API de HTTP convencional actual, la interfaz de gRPC adopta el diseño de arquitectura subyacente HTTP/2 líder como protocolo de transmisión subyacente , que se puede usar en escenarios de transmisión de datos a gran escala (como transmisión de video) y escenarios de arquitectura de microservicios donde un gran cantidad de servicios se llaman entre sí Siguiente muestra tus habilidades.

El intercambio de datos adopta el protocolo de serialización ligero Protobuf , que le permite proporcionar una velocidad de procesamiento de datos más rápida en escenarios con recursos limitados (comúnmente encontrados en dispositivos móviles como teléfonos móviles), al tiempo que reduce la cantidad de datos transmitidos por la red y ahorra ancho de banda de la red. por lo tanto, reduce el consumo de energía y mejora la duración de la batería.

Antes de presentar oficialmente gRPC, también podríamos averiguar qué es RPC y qué hace, lo cual es muy útil para la comprensión posterior.

¿Qué son los RPC?

El protocolo RPC  es una implementación de llamadas a procedimientos remotos . Supongamos que ahora hay dos servidores A y B. Un servicio implementado en el servidor A quiere llamar a otro proceso que se ejecuta en el servidor B. Sin embargo, debido a que los dos servicios no están en el mismo espacio de memoria, no se pueden llamar directamente, por lo que el efecto de llamada debe lograrse a través de la comunicación de red.

Establecer una comunicación de red no es más que iniciar una conexión TCP en la capa de transporte. El mecanismo de protocolo de enlace de TCP garantiza que los paquetes de datos se puedan transmitir de manera confiable a la otra parte y tiene las siguientes tres características: orientado a la conexión, confiable y basado en bytes . Las dos funciones anteriores son adecuadas para este escenario, pero el único punto que se basa en flujos de bytes puede ser cuestionable. ¿Por qué?

Porque no tiene límites . El flujo de bytes es esencialmente los datos que fluyen en el canal bidireccional de la capa de transporte, es decir, los datos binarios 0 1 que la computadora puede entender. Entonces, cuando el remitente usa TCP para enviar los caracteres "Ciudad de Nanjing" + "Puente del río Yangtze", el receptor puede recibir "Alcalde de Nanjing" + "Puente de Jiangjiang" o "Puente del río Yangtze de Nanjing".

El proceso de conexión TCP demasiado simplificado no puede garantizar la unicidad y certeza de la información, por lo que es necesario definir el encabezado del mensaje y el cuerpo del mensaje en los datos , y el remitente y el receptor acuerdan este método de comunicación, derivando así el protocolo HTTP y las llamadas RPC y otros esquemas esencialmente definen transferencia de datos estandarizados y métodos de llamada para evitar la distorsión de la información .

Por ejemplo, ahora hay un sitio web de compras con  dos microservicios , servicio de pedidos y servicio de usuario (como la gestión de cuentas) . El servicio de pedidos necesita consultar algunos datos en el servicio de usuario, pero los dos están aislados. En este momento, el servicio de pedidos debe obtener datos a través de llamadas remotas.

En el ejemplo de la figura a continuación, el servidor (servicio de usuario)  solo necesita exponer una función getConsumerByld() que puede llamar a la base de datos, y el cliente (servicio de pedidos)  puede usar RPC para llamar directamente a la función getConsumerByld() y obtener todos la respuesta deseada. RPC oculta con éxito la complejidad de la comunicación interna y proporciona una interfaz estable y unificada para ambas partes, de modo que los desarrolladores solo deben prestar atención a la lógica comercial y no a los detalles de la comunicación de red subyacente.

Y gRPC es esencialmente un marco RPC lanzado y de código abierto por Google .

¿Cuáles son las ventajas de gRPC?

Protocolo de transporte avanzado

HTTP/2 se lanzó un poco antes que gRPC en 2015, por lo que gRPC naturalmente usa este protocolo de transporte avanzado como la base subyacente, por lo que tiene un rendimiento de transporte más eficiente y también puede admitir llamadas de transmisión para muchos datos en tiempo real. para escenarios de transmisión (como datos de stock, comunicación de voz, escenarios de juegos) y, naturalmente, está por delante de muchos marcos RPC antiguos lanzados en el cambio de milenio. Se establece un grupo de conexiones cuando se inicia una conexión, lo que puede mejorar significativamente el rendimiento de las solicitudes de red cuando se enfrentan a múltiples conexiones.

Concepto de diseño científico

Al mismo tiempo, gRPC usa el protocolo de serialización Protobuf más pequeño para guardar datos de estructura. Protocol Buffers es un protocolo de serialización de estructura de datos multiplataforma y multilenguaje. Es más liviano que los protocolos JSON o XML y, por lo tanto, más eficiente en la transferencia de datos .

Al mismo tiempo, esto también determina que la interfaz de gRPC debe seguir el concepto API First, ya que la interfaz del servicio debe definirse en el archivo antes de que comience el trabajo de desarrollo, incluida la forma en que el cliente usa el servicio y los parámetros que deben definirse. pasó al llamar. La interfaz gRPC puede generar automáticamente el método de comunicación entre el cliente y el servidor de acuerdo con el archivo .proto definido, lo que simplifica enormemente el proceso de desarrollo .

buena compatibilidad

gRPC no depende de ninguna tecnología específica o pila de lenguaje, por lo que puede usarse ampliamente en diferentes entornos de desarrollo. Admite múltiples lenguajes de programación, incluidos Java, C ++, Python, Go y otros lenguajes de programación modernos y populares. Puede comunicarse fácilmente entre diferentes idiomas, lo que brinda un sólido soporte para la arquitectura de microservicios en varios idiomas.

Aunque gRPC tiene muchas ventajas, la mayoría de los usuarios externos están más familiarizados con la interfaz HTTP (esto también lleva a que la prosperidad ecológica de gRPC no sea tan buena como el protocolo REST/HTTP), por lo que el principal escenario de aplicación de gRPC es la comunicación entre microservicios. dentro del equipo y Conexiones no son aptos para exponer servicios para consumo externo . Y si desea llamar a gRPC con éxito, también puede implicar el proceso de transferencia de parámetros del sistema interno. Otra desventaja relativamente grande es que los navegadores no admiten llamadas de servicio gRPC y necesitan usar extensiones o herramientas profesionales de llamada de interfaz (como Apifox) para llevar a cabo la colaboración de interfaz.

Función de depuración de la interfaz Apifox gRPC

Apifox  ha lanzado la función de depuración de la interfaz de gRPC. Demostraremos brevemente cómo crear un nuevo proyecto de gRPC en Apifox e iniciar la depuración de la interfaz a través de un escenario de muestra.

Nota: La función de administración de la interfaz de gRPC requiere que el número de versión de Apifox sea mayor o igual a 2.3.0  .

Haga clic en el botón "Nuevo proyecto" en Apifox, seleccione el tipo de gRPC, complete el nombre del proyecto y toque el botón "Nuevo".

Importe un archivo .proto que defina los servicios, métodos y mensajes usados ​​por la interfaz de gRPC. Puede arrastrar y soltar archivos en él o usar la URL en línea del archivo para completar la importación.

Apifox generará la información de interfaz correspondiente según el contenido del archivo .proto. La interfaz de muestra viene con cuatro métodos de llamada: llamada única, flujo de servidor, flujo de cliente y flujo bidireccional.

hacer una llamada unaria

Una llamada unaria se refiere a enviar un mensaje en una solicitud y recibir un mensaje en respuesta. En comparación con JSON, gRPC usa Protocol Buffers (ProtoBuf) como el marco de serialización predeterminado, que puede expresar datos de manera más compacta y mejorar la velocidad de transmisión. Y gRPC usa HTTP/2 como protocolo de transporte subyacente y aplica directamente el algoritmo de compresión HPACK para procesar la información en el encabezado, lo que reduce el tamaño del encabezado durante la transmisión de la red y, por lo tanto, ahorra recursos de ancho de banda. Esto es muy amigable para escenarios que transmiten datos pequeños o requieren una respuesta en tiempo real.
Seleccione el método SayHello y complete grpcb.in:9000 en la dirección de la interfaz. Luego haga clic en el botón "Generar automáticamente" para generar el cuerpo de la solicitud y toque "Llamar" para ver la respuesta devuelta.

En Apifox, puede extraer fácilmente la dirección de la interfaz al "entorno", para que otros miembros del equipo u otras interfaces en el proyecto puedan iniciar solicitudes de llamada.

Iniciar una llamada de transmisión

Las secuencias del lado del servidor, las secuencias del lado del cliente y las secuencias bidireccionales se conocen como llamadas de transmisión. Permite establecer una conexión de transmisión dúplex persistente entre el cliente y el servidor, y los datos se leen y escriben a través de la transmisión. La característica principal de la transmisión de llamadas es que pueden enviar y recibir múltiples mensajes en una conexión, admiten una interacción continua y una transmisión de datos a gran escala, y a menudo se usan en el intercambio de datos de stock, comunicación de video y voz y escenarios de juegos en línea.

corriente del servidor

Al igual que lo que significa en el ícono, la secuencia del servidor significa: enviar una vez y devolver múltiples datos de respuesta. Por ejemplo, suscríbase a los datos de precios de transacción de todas las acciones en un minuto.

flujo de cliente

En este modo, el cliente puede enviar continuamente varios mensajes de solicitud al servidor sin esperar una respuesta inmediata del servidor. Después de iniciar la llamada, puede continuar completando la información de la solicitud en el Mensaje y luego hacer clic en el botón "Enviar". Una vez que el servidor ha procesado todas las solicitudes, envía un único mensaje de respuesta al cliente.

flujo bidireccional

Los flujos bidireccionales permiten una comunicación bidireccional persistente entre un cliente y un servidor, y se pueden transmitir varios mensajes simultáneamente. Comúnmente utilizado en juegos en línea y software de videollamadas en tiempo real, es adecuado para escenarios de comunicación en tiempo real y transmisión de datos a gran escala. Después de iniciar la llamada, el cliente y el servidor continuarán manteniendo una sesión y obtendrán una respuesta en tiempo real después de enviar contenido de solicitud diferente.

colaboración de interfaz gRPC

Apifox puede representar documentos de interfaz gRPC que son más adecuados para la lectura humana basados ​​en archivos .proto, lo que facilita la colaboración en equipos de las interfaces. Puede hacer clic en el botón de menú en el lado derecho de la interfaz para obtener el enlace de colaboración y compartirlo con otros miembros del equipo para alinear el método de depuración de la interfaz.

La función de depuración de la interfaz gRPC de Apifox se encuentra en la etapa de prueba pública Beta . La función actual es solo el primer paso que hemos dado y continuará actualizándose iterativamente en el futuro. Como plataforma de colaboración integrada de API, Apifox  espera brindar la misma excelente experiencia para diferentes tecnologías de API.

Supongo que te gusta

Origin blog.csdn.net/m0_71808387/article/details/131592989
Recomendado
Clasificación