NI Remote-Ability:以 gRPC 存取 NI 儀器

綜覽

NI Remote-Ability 支援使用 gRPC Remote Procedure Calls (gRPC) 技術與 NI 儀器進行遠端互動。NI 投資力求讓我們的產品能使用 gRPC,為的是能夠支援客戶遠端操作 NI 產品,用於執行高品質、低潛時的量測作業。NI Remote-Ability 能讓工程師靈活運用現有的測試工作流程。

內容

什麼是 NI Remote-Ability?

NI 軟體 Remote-Ability 能遠端操作 NI 硬體與服務,用於進行高品質、低潛時的量測作業。NI 軟體 Remote-Ability 以完整且不受作業系統限制的方式運用預先定義的獨立應用程式和/或 API 和/或指令,並且善用用戶端/伺服器架構發揮槓桿作用。 

NI Remote-Ability 所採用的基礎技術是 gRPC。使用 gRPC 架構的伺服器,支援您透過多種不同的程式設計環境、平台與作業系統,存取與控制測試與量測設備。 

gRPC 採用的訊息交換格式是 Protocol Buffer (Proto3)。下圖說明在 gRPC 伺服器與存根 (Stub) 之間傳送原型要求與回應的方式。 

圖 1: gRPC 伺服器的要求與回應

Windows、Linux 和 Mac 均支援 NI Remote-Ability,其適用範圍概括許多程式設計語言。如需可支援語言及其作業系統的完整清單,請參閱我們的 gRPC 支援資源。

什麼是 gRPC?

gRPC 是一種開放原始碼遠端程序呼叫 (RPC) 架構,能在任何位置執行。這個架構支援用戶端和應用程式保持透明通訊,也更易於在遠端建構連線系統。

在 gRPC 中,用戶端應用程式可以直接呼叫不同機器上伺服器應用程式的方法,就像呼叫本地端物件一樣,建立起分散式應用程式與服務更加輕鬆。在伺服器端,伺服器會執行這個介面並執行 gRPC 伺服器,用於處理用戶端呼叫。 在用戶端上,用戶端有一個「存根」(Stub,有些語言將 Stub 稱為用戶端),用於提供與伺服器相同的方法。

使用 gRPC 的其中一大原因,在於它不挑用戶端的作業系統和語言,能發揮彈性,而且可以依據專案目前所用的作業系統或程式設計語言進行調整。

NI 透過使用 gRPC 的 Remote-Ability 加入其他知名公司之列

NI 運用 gRPC 開發 NI Remote-Ability,形同加入 Google、Netflix 和 Square 等其他大型公司的行列。gRPC 有強大的功能,這些是 RPyC、SCPI 及 HiSLIP 等其他同類型產品所不能及的。

  • 非常強大的即時開發與社群,包括 Google 提供的支援 
  • 良好的預設效能與功能
  • 定義明確的介面定義語言:Protobuf
  • 支援多種語言與作業系統,如果還納入非官方/第三方用戶端支援,更是特別好用
  • 必須使用不挑語言和作業系統的情況時,能充分發揮作用

 

gRPC 中的認證/授權

NI Remote-Ability 使用 gRPC 的預設授權機制。伺服器端 TLS 或相互 TLS (零信任) 能確實加密兩方通訊,而用戶端/伺服器也是可以信任的,因此能保障連線安全。只要整合授權伺服器,就能更新伺服器並加入自訂授權。

NI Remote-Ability 的預期效能

NI Remote-Ability 能協助您在進行高品質量測時確實降低潛時。以下範例示範自裝有 NI-9207 C 系列模組的 cDAQ-9179 模擬機箱讀取類比輸入電壓時的效能指標。

gRPC 用於效能

伺服器將資料串流至用戶端:

  • 自伺服器串流的每則訊息含 200000 個雙精度浮點數 (double)
  • 預設設定使用 Protobuf
  • 不安全的憑證
  • 一個用戶端連線
  • 1 Gb 乙太網路 (透過交換器)

Linux Localhost

  • 4 GB/s 單一串流
  • 多重串流達 8 GB/s
  • 基線:Linux Localhost 原始通訊端:約 10 GB/s 

Windows 10 Localhost:4 GB/s1

Linux 對 Linux:11 MB/s

  • 理論最大值的 93% 

Thunderbolt 3 Link 區域網路

  • Windows 用戶端、Linux 伺服器:1.2 GB/s
  • Linux 用戶端、Linux 伺服器:1.6 GB/s
  • Linux (使用 SSH):850 MB/s

1 請注意 CISO AMP

使用 NI-DAQmx 時的 gRPC 效能

NI-DAQmx 加上 cDAQ-9179 模擬機箱與 NI-9207 模組:

  • C++ 應用程式直接呼叫 NI-DAQmx:121.6 ms
  • gRPC Windows 用戶端、Localhost 伺服器:121.9 ms
  • gRPC Linux 用戶端 (透過 1 Gb 網路連線,非直接連線):123.9 ms

如這些基準所示,gRPC 呼叫可媲美原生驅動程式呼叫,而且潛時最短。gRPC 能支援 NI 客戶在遠端與 NI 產品互動,用於執行高品質、低潛時的量測作業,同時能充分善用既有的測試工作流程。