NI Remote-Ability:使用gRPC访问NI仪器

概览

NI Remote-Ability可通过gRPC远程过程调用(gRPC)技术实现与NI仪器的远程交互。NI投入了大量精力以确保其产品与gRPC兼容,从而使NI客户可借助gRPC与NI产品进行远程交互,以进行高质量、低延迟的测量。工程师可使用NI Remote-Ability灵活地利用现有测试工作流程。

内容

什么NI Remote-Ability?

NI Software Remote-Ability能够通过与NI硬件和服务进行远程交互,从而实现高质量、低延迟测量。NI Software Remote-Ability在整体上并不依赖于操作系统,而是使用预定义的独立应用程序和/或API和/或命令,并利用客户端/服务器架构。 

NI Remote-Ability的根本在于gRPC。使用基于gRPC的服务器,可以从许多不同的编程环境、平台和操作系统访问和控制测试与测量设备。 

gRPC使用Protocol buffers (Proto3)作为其消息交换格式。下图所示为gRPC服务器和Stub之间Proto请求和响应的发送方式。 

图1: gRPC服务器的请求和响应

NI Remote-Ability可在Windows、Linux和Mac操作系统中运行,支持多种编程语言。有关受支持语言及操作系统的完整列表,请参阅gRPC支持资源。

什么gRPC?

gRPC是一种开源远程过程调用(RPC)框架,可以在任何环境中运行。该框架可以实现客户端和服务器应用程序之间的透明通信,同时简化了互联系统的远程构建过程。

在gRPC中,客户端应用程序可像调用本地对象一样直接调用其他机器的服务器应用程序中的方法,从而更轻松地创建分布式应用程序和服务。在服务器端,由服务器实现该接口,并运行一个gRPC服务器来处理客户端调用。 在客户端,客户端通过Stub(在某些语言中仅称为客户端)提供与服务器相同的方法。

选择gRPC的一个主要原因在于,其可在客户端灵活运行,不受操作系统和语言限制,并且能适应当前操作系统或项目中已使用的编程语言。

众多知名公司通过使用gRPC引入NI Remote-Ability

通过将gRPC用于NI Remote-Ability,NI逐渐与众多知名公司展开合作,例如谷歌、网飞和Square等。gRPC的强大功能弥补了RPyC、SCPI和HiSLIP等其他协议的不足:

  • 十分活跃的开发和社区,并获得来自谷歌的支持 
  • 出色的默认性能和功能
  • 明确的接口定义语言:Protobuf
  • 支持多种语言和操作系统,尤其是在非官方/第三方客户端支持的情况下
  • 适用于需要不受语言和操作系统限制的远程连接的设置

 

gRPC中的身份验证/授权

NI Remote-Ability使用gRPC的默认授权机制。可通过服务器端TLS或双向TLS(零信任)保护连接,从而确保加密通信并且客户端/服务器可信任。用户可通过与授权服务器集成来更新服务器以使其包含自定义授权。

NI Remote-Ability预期性能

使用NI Remote-Ability可确保在进行高质量测量时保持较低的延迟。下例显示了从带有NI-9207 C系列模块的仿真cDAQ-9179机箱读取模拟输入电压时的性能基准测试。

使传输gRPC性能

服务器向客户端流式传输数据:

  • 每条从服务器流式传输的消息包含200,000个双精度浮点数
  • Protobuf的默认配置
  • 凭证不安全
  • 单客户端连接
  • 1 Gb以太网直通交换机

Linux本地主机

  • 4 GB/s单数据流
  • 8 GB/s多数据流
  • 基准:Linux本地主机原始插槽:约10 GB/s 

Windows 10本地主机:4 GB/秒1

Linux至Linux:11 MB/s

  • 理论最大值的93% 

Thunderbolt 3链接本地网络

  • Windows客户端、Linux服务器:1.2 GB/s
  • Linux客户端、Linux服务器:1.6 GB/s
  • 通过SSH运行Linux:850 MB/s

1注意CISO AMP

NI-DAQmxgRPC性能

带有仿真cDAQ-9179机箱和NI-9207模块的NI-DAQmx:

  • C++应用程序直接调用NI-DAQmx:121.6 ms
  • gRPC Windows客户端、本地主机服务器:121.9 ms
  • 未直接连接网络(1 Gb)的gRPC Linux客户端:123.9 ms

由上述基准测试可知,gRPC调用与本机驱动程序调用性能相当,并且延迟最小。NI客户可借助gRPC与NI产品进行远程交互,以利用现有的测试工作流程进行高质量、低延迟的测量。