NI Remote-Ability: Acceder a la instrumentación de NI con gRPC

Información general

NI Remote-Ability permite la interacción remota con la instrumentación de NI, utilizando la tecnología gRPC Remote Procedure Calls (gRPC). NI ha invertido para garantizar que nuestros productos funcionen con gRPC, para que nuestros clientes puedan interactuar de forma remota con los productos de NI para realizar medidas de alta calidad y baja latencia. Al usar NI Remote-Ability, los ingenieros pueden aprovechar los flujos de trabajo de pruebas existentes con flexibilidad.

Contenido

¿Qué es NI Remote-Ability?

NI software Remote-Ability es la capacidad de interactuar de forma remota con hardware y servicios de NI para realizar medidas de alta calidad y baja latencia. NI Software Remote-Ability utiliza aplicaciones autónomas predefinidas y/o APIs y/o comandos de una manera holística e independiente del sistema operativo y aprovecha una arquitectura cliente/servidor. 

NI Remote-Ability utiliza gRPC en segundo plano. Usar un servidor basado en gRPC le brinda la posibilidad de acceder y controlar equipos de pruebas y medidas desde diferentes entornos de programación, plataformas y sistemas operativos. 

gRPC usa búferes de protocolo (Proto3) como su formato de intercambio de mensajes. La siguiente figura muestra cómo se envían las solicitudes y respuestas de prototipos entre el servidor gRPC y los stubs. 

Figura 1: Solicitudes y respuestas del servidor gRPC

NI Remote-Ability es compatible con Windows, Linux y Mac, para una variedad de lenguajes de programación. Para obtener una lista completa de los lenguajes compatibles y sus sistemas operativos, consulte nuestros recursos de soporte de gRPC.

¿Qué es gRPC?

gRPC es un framework de llamada a procedimiento remoto (RPC) de código abierto que puede ejecutarse en cualquier lugar. Permite que las aplicaciones de cliente y servidor se comuniquen de manera transparente y permite que sea más fácil construir sistemas conectados de forma remota.

En gRPC, una aplicación cliente puede llamar directamente a un método en una aplicación de servidor en una máquina diferente como si fuera un objeto local, lo que le facilita la creación de aplicaciones y servicios distribuidos. En el lado del servidor, el servidor implementa esta interfaz y ejecuta un servidor gRPC para manejar las llamadas de los clientes. En el lado del cliente, el cliente tiene un stub, denominado simplemente cliente en algunos lenguajes, que proporciona los mismos métodos que el servidor.

Un aspecto principal de usar gRPC es que es independiente del sistema operativo y del lenguaje en el lado del cliente, le brinda flexibilidad y se puede adaptar al sistema operativo actual o a los lenguajes de programación que ya se utilizan en su proyecto.

NI Remote-Ability se une a otras compañías prominentes que utilizan gRPC

Al usar gRPC para NI Remote-Ability, NI se une a otras grandes compañías como Google, Netflix y Square. gRPC tiene sólidas capacidades de las que carecen otras opciones como RPyC, SCPI y HiSLIP:

  • Desarrollo y comunidad muy activos, incluyendo el respaldo de Google 
  • Buen rendimiento y características predeterminadas
  • Lenguaje de definición de interfaz bien definido: Protobuf
  • Soporte para muchos lenguajes y sistemas operativos, especialmente si incluye soporte de cliente no oficial/de terceros
  • Funciona bien en una configuración donde se requiere una conexión remota independiente del lenguaje y del sistema operativo

 

Autenticación/autorización en gRPC

NI Remote-Ability utiliza los mecanismos pre determinados de autorización de gRPC . La conexión se puede proteger mediante TLS del lado del servidor o TLS mutuo (Zero Trust), lo que garantiza que la comunicación esté encriptada y que se pueda confiar en el cliente/servidor. Puede actualizar el servidor para incluir autorización personalizada integrándolo con un servidor de autorización.

Rendimiento esperado de NI Remote-Ability

Usar NI Remote-Ability es una manera de ayudar a garantizar que mantenga baja la latencia al realizar medidas de alta calidad. El siguiente ejemplo muestra las pruebas de rendimiento al leer un voltaje de entrada analógica de un chasis cDAQ-9179 simulado con un módulo NI-9207 de la serie C.

Rendimiento de gRPC con streaming

Servidor transfiere datos al cliente:

  • 200,000 dobles por mensaje transmitidos desde el servidor
  • Configuración predeterminada con Protobuf
  • Credenciales inseguras
  • Una conexión de cliente
  • Ethernet de 1 Gb a través del conmutador

Localhost Linux

  • 4 GB/s un solo flujo
  • 8 GB/s con múltiples flujos
  • Línea base: Sockets sin procesar de localhost Linux: aproximadamente 10 GB/s 

Localhost Windows 10: 4 GB/s1

Linux a Linux: 11 MB/s

  • 93% del máximo teórico 

Red local de enlace Thunderbolt 3

  • Cliente Windows, servidor Linux: 1.2 GB/s
  • Cliente Linux, servidor Linux: 1.6 GB/s
  • Linux sobre SSH: 850 MB/s

1 Cuidado con CISO AMP

Rendimiento de gRPC con NI-DAQmx

NI-DAQmx con un chasis cDAQ-9179 simulado y módulos NI-9207:

  • Llamadas directas a NI-DAQmx de la aplicación C++: 121.6 ms
  • Cliente Windows gRPC, servidor localhost: 121.9 ms
  • Sin conexión directa para cliente gRPC de Linux a través de la red (1 GB): 123.9 ms

Como se ve en estos puntos de referencia, las llamadas de gRPC son comparables a las llamadas de controladores nativos y tienen una latencia mínima. Con gRPC, los clientes de NI pueden interactuar de forma remota con los productos de NI para realizar medidas de alta calidad y baja latencia y aprovechar los flujos de trabajo de las pruebas existentes.