技術干貨丨MixIOT 數據入棧交換服務組件——入棧機(Dixie)
入棧機(Dixie):
Dixie是MixIOT體系中的數據入棧交換服務組件,簡稱入棧機。在MixIOT體系中,除了可以使用智物聯的數據采集終端,也支持第三方的數據采集終端,而且不要求第三方的數據采集終端遵循MixIOT體系的數據報文規則。那么,這些第三方數據終端采集到的數據,怎么能夠在MixIOT系統中進行數據處理呢?這就需要用到Dixie(入棧機)來幫忙了。
入棧機服務可以理解為MixIOT的前置翻譯服務,可以把任何第三方數據采集終端上報的任何格式的數據,轉換成符合MixIOT規范的數據格式。這樣,經過入棧機的數據,實際上就變成了符合MixIOT規范的數據。
圖1 入棧機的使用場景
圖1就是一個比較典型的使用場景:通過第三方的OPC UA/DA數據采集終端,采集CNC數控加工中心的數據。這個OPC UA/DA數據采集終端所采集的數據,是按其他的標準來的,并不符合MixIOT體系的數據規范,那么,就需要先把這個數據報文給MixIOT Dixie,讓入棧機把數據進行翻譯,變成符合MixIOT體系規范的數據。
Dixie并不限于對接第三方的數據采集終端,而是可以對接任何形式的數據來源,包括來自其他平臺的數據、ERP/MRP的數據、CRM的數據、MES的數據等。
Dixie的管理:
Dixie是MixIOT的一個標準組件。如果需要使用Dixie,需要在MixIOT Admin里面去創建Dixie項目。創建完成后,隨時就可以把Dixie服務給啟動起來,如圖2所示。
Dixie的設置相對是比較復雜的,要真正弄清楚這些設置到底是怎么一回事,就需要對MixIOT系統有更加深入的了解。下面就來解釋一下MixIOT是怎樣接收數據的。
圖2 入棧機項目的啟動
Gards服務:
實際上,我們總在說的MixIOT系統,不管是如來方略云部署,還是如來方略柜部署,它都有一個專門用來接收數據的服務組件,叫Gards組件。是通用遠程數據服務,這是一個基于MQTT協議的數據交換服務。Gards服務可以用來接收所有適配器和UFS傳送過來的數據。
Gards有兩個版本,分別是Gards Pagosa(單主機版本)和Gards Falconer(集群版本),在部署MixIOT的時候可以根據實際需要選擇。一般來說,對系統整體可靠性要求很高的情況,可以部署Gards Falconer版本;對普通的工業物聯網應用,Gards Pagosa一般都可以滿足需要。
雖然Gards支持MQTTV3/5協議,但它只能接收符合MixIOT規范的MQTT數據,這是因為MixIOT系統把標準的MQTT服務做了一些擴充和改變,這個問題就不做詳細描述了,大家可以參考智物聯的其他公開技術資料,這些調整和改變是為了讓服務更加高效可靠。
Gards服務除了接收來自適配器和UFS的數據(“數據上行”),也可以給適配器發送數據(“數據下行”),如圖3所示。關于數據下行可以參考《反向控制》一章。
我們注意到,在Dixie的配置里面,需要配置Gards服務器。這是因為Dixie要知道,這些第三方的數據翻譯好后,要把它們發到什么地方。
圖3 Gards服務
一旦數據進入了Gards服務,后面就是執行標準的MixIOT數據處理流程了。
Garoute服務:
前面介紹了MixIOT系統中的Gards服務。對一個復雜的系統來說,比如數據終端有幾十上百萬個,甚至更多,那么一個Gards服務就很難應付了。所以,一個MixIOT系統允許同時存在多個GardsPagosa服務,或者一個GardsFalconer服務。當一個系統中存在多個Gards服務,那Dixie的數據該送去哪一個Gards呢?
如果我們把所有的數據都死命往一個Gards里送,就很可能導致這個Gards忙死,別的Gards閑死,讓系統失去平衡而出現問題。Garoute就是用來解決這個問題的,Garoute實際上是Gards Route(通用遠程數據服務路徑)的意思,它可以告訴Dixie,什么數據往哪里送。這就是為什么我們在MIXIOT Admin的Dixie服務中,看到有Garoute這個選項。如果MixIOT里只有一個Gards的話,就可以不去管這個選項;而如果存在多個Gards的情況,這個選項就必須要指定,否則,那些翻譯好的數據就不知去向了。
圖4,就解釋了Garoute和Gards之間的關系,Dixie首先需要向Garoute詢問,這些數據發給誰,在得到回復后,就按回復的走。需要說明的是,Dixie并不是每次發生數據都要問Garoute這個數據發給誰,Dixie跟Garoute之間是一個通信管道,該切換到哪一個Gards,Garoute會隨時通知,在沒得到新的通知之前,還是會按之前指定的選項來發。
圖4 Garoute和Gards
這里稍微解釋一下,多個Gards Pagosa(單主機版本)和一個Gards Falconer(集群版本)是兩回事,多個單機版本的Gards算多個Gards,Garoute需要去管理負載平衡;而集群版本的Gards雖然也是由多個Gards構成,但在邏輯上仍然只能算一個Gards。這有點像我們安裝服務器的時候,用了兩個硬盤做鏡像一樣,如果一個硬盤壞了,另一個硬盤還能接著工作,但容量還是一個硬盤。所以,集群Gards的能力并不會比單機版高。
Dixie模板和腳本:
MixIOT里面幾乎所有的東西,都是由模板和腳本構成的。映射表、代碼庫等各類組件莫不如此。
Dixie也不例外,也有模板和腳本。Dixie模板是用來描述和解析那些來自第三方的數據是什么樣子的,而Dixie腳本是用來告訴Dixie服務,這個樣子的原始數據需要用什么方法變成MixIOT能接受的樣子。
除了模板腳本和前面介紹的Gards、Garoute,還有不少其他的東西,比如源網關列表之類的,這些都是具體使用的細節了,有需要可以參考詳細的使用手冊。

