溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Predix Asset Service深度分析

發(fā)布時間:2020-06-12 21:14:15 來源:網(wǎng)絡(luò) 閱讀:1560 作者:zsdnr 欄目:數(shù)據(jù)庫

前言

在IIOT領(lǐng)域,面臨著保存海量數(shù)據(jù)的挑戰(zhàn),具體到Asset層面,則要保存物理對象,邏輯對象,復雜的關(guān)系,并支持對象間的組合,分類,標簽和高效查詢??偨Y(jié)來說,可以歸納為如下幾種需求:

 

  1. 靈活的建模風格:支持不同業(yè)務(wù)領(lǐng)域業(yè)務(wù)對象

  2. 支持自定義屬性:可以是簡單的字符串,也可以是對象

  3. 支持對象間關(guān)系:層次或圖關(guān)系

  4. 支持對象間組合:如電機由線圈和轉(zhuǎn)子組成

  5. 支持分類:對對象做宏觀分類并保存公共屬性

  6. 支持標簽:方便用戶查詢

  7. 支持靈活和高性能查詢:支持針對屬性,針對關(guān)系,層次等查詢。

  8. 操作歷史:操作日志和審計

  9. 業(yè)務(wù)能力擴展:腳本

架構(gòu)

Predix架構(gòu)如下所示:

Predix Asset Service深度分析

 

  • REST API layer

Client應用可以通過REST API服務(wù)獲取asset數(shù)據(jù)。這些接口提供了JSON形式的接口,用戶可以通過POST形式傳遞這些數(shù)據(jù)。為了使用這些API,應用程序發(fā)送HTTPS請求并解析響應??梢允褂萌魏蝫eb端開發(fā)語言解析。

  • Representation layer

Representation Layer將數(shù)據(jù)由JSON轉(zhuǎn)換為內(nèi)部圖形式表示,也負責完成相反的過程。

  • Query engine

Query engine允許開發(fā)者使用JSON AND Graph Expression(GEL)來獲取Asset Data Store中保存的任意對象或?qū)ο髮傩缘臄?shù)據(jù)。

  • Audit History Service

提供API用來獲取Asset Service庫中REST請求的歷史信息。

  • Script engine

使用戶能夠?qū)⒍ㄖ频臉I(yè)務(wù)邏輯綁定到Asset Service的REST API上。

  • Cassandra graph database

Assert Service將數(shù)據(jù)保存于Apache Cassandra Nosql數(shù)據(jù)庫

數(shù)據(jù)模型

asset

Asset模型可以理解為物理設(shè)備在虛擬世界的映射,Asset不但包含設(shè)備本身,也包含該設(shè)備如何組織和關(guān)聯(lián)的信息。

classification

對asset進行分類,并保存其公共信息。

custom modeling object

自定義的模型,用來進一步進行描述,如生產(chǎn)商等。

API CategoryDescription
Assets典型的,我們采用層次結(jié)構(gòu)定義asset,由parent asset和一個或多個child asset組成。我們可以將asset與一個classification或任意數(shù)目的custom modeling object關(guān)聯(lián)。Asset可以包含任意多個用戶自定義屬性(custom-defined attribute)。

一個asset也可獨立存在于系統(tǒng)中,不與任何的其他建模元素關(guān)聯(lián)。
Classifications

采用樹狀結(jié)構(gòu)組織,并了一種對asset進行分組和跟蹤公共屬性的手段。一個classification可以指向多個asset。classification的任意層次上均可以指定attribute。

Custom modeling objects

定制模型對象(custom modeling object)是層次化的,我們可以使用它為asset提供更多的信息。例如,我們可以為asset location,manufactureer等創(chuàng)建單獨的對象。一個location可以與多個asset關(guān)聯(lián),類似的,一個asset也可以關(guān)聯(lián)多個location。

模型示例

Predix Asset Service深度分析

Fleets Sample JSON

{

"uri":"/fleets/up-1",

"name":"Union Pacific Fleet 1",

"customer":"/customers/union-pacific"

},

Manufacturers Sample JSON

"uri":"/manufacturers/GE",

"name":"General Electric Transportation",

"year_founded":"1892",

"hqLatLng":{

        "lat":41.881138, 

        "lng":-87.640666}

}

Engines Sample Data

{

"uri":"/engines/v12-1",

"type":"7FDL",

"horsepower":"4400",

"stroke":"230",

"bore":"220",

"RPM":"2400",

"manufacturer":"/manufacturers/GE"

}

Locomotives Sample JSON

{

"uri":"/locomotives/1",

"type":"Diesel-electric",

"model":"ES44AC",

"serial_no":"001",

"emission_tier":"0+",

"fleet":"/fleets/up-1",

"manufacturer":"/manufacturers/GE",

"engine":"/engines/v12-1",

"installedOn":"01/12/2005",

"dateIso":"2005-12-01T13:15:31Z",

"hqLatLng":{

"lat":33.914605,

"lng":-117.253374

}

}

從上面的例子可以看出模型是如何組織的。

存儲分析

Asset的存儲要考慮兩個部分,json-schema和json。json-schema是json的校驗標準,任何對存儲系統(tǒng)的修改都需要使用json-schema校驗。更加抽象的思考,json-schema類似于面向?qū)ο蟮念?,而json則是類的實現(xiàn):對象。只是這種實例化是由RESTAPI觸發(fā)的,且合法性由json-schema保證。

 

由于工業(yè)領(lǐng)域需要面對海量對象,海量關(guān)系及多種結(jié)構(gòu)的數(shù)據(jù)對象(blob value,,picture, log)等,傳統(tǒng)的SQL數(shù)據(jù)庫必然無法滿足這些需求,且對于JSON來說,最適合應用key-value數(shù)據(jù)庫類型,當然該數(shù)據(jù)庫需要提供良好的性能及可擴展性。

 

經(jīng)過近些年的發(fā)展,cassandra與hbase在不同領(lǐng)域內(nèi)的應用出現(xiàn)了分化,hbase紀玉hadoop,支持mapreduce,更加適合于大數(shù)據(jù)計算的場景;而cassandra除了在范圍查詢性能落后與hbase之外,在易用性,可擴展性,健壯性(無管理節(jié)點),以及在大多數(shù)的性能應用場景上對hbase存在優(yōu)勢,因此考慮使用cassandra作為asset的存儲。

 

具體的,使用cassandra要滿足如下的要求:

 

  • 良好的橫向擴展性

  • 良好的可維護性

  • 高性能

  • 支持歷史記錄存儲

  • 能夠擴展關(guān)系存儲及查詢

可擴展性

Predix提供了Javascript語言支持更多的自定義應用。

 

JS支持是JDK自帶的功能,而Predix將此功能應用在REST API上,能夠在REST API的執(zhí)行前后運行JS腳本,實現(xiàn)功能的擴展。其中REST API既可以是資源的CRUD API,也可以是自定義API。其執(zhí)行邏輯為:開始--->(JS代碼)--->REST API--->(JS代碼)-->系統(tǒng)通知

 

也即JS代碼可以選擇在REST API執(zhí)行前后執(zhí)行,如果JS代碼在REST API執(zhí)行前,則可用于輸入數(shù)據(jù)校驗等,如果在REST API執(zhí)行后,則可進行通知發(fā)送等應用。為了更加靈活的使用JS代碼,JS代碼中可以引用已經(jīng)定義的工具方法(Predix提供),也可以調(diào)用其他REST API接口。

 

JS代碼執(zhí)行時工業(yè)云應用必備的部分,如SCADA系統(tǒng)和Thingwrox均提供了JS代碼執(zhí)行功能。但Thingwrox的JS執(zhí)行依附于Thing本身(自定義方法)及訂閱,而Predix則基于對已有REST API的封裝(當然也支持自定義的REST API),總的來說Thingwrox實現(xiàn)的功能,predix也能實現(xiàn)。

 

例如:

        1. 調(diào)用系統(tǒng)方法(predix和thingwrox均提供了系統(tǒng)方法)

        2. 調(diào)用asset的屬性(均可,thingwrox可以在腳本中通過this.引用)

        3. 調(diào)用asset的方法(thingwrox可以,predix不明)

        4. 調(diào)用其他asset的屬性(predix通過restapi查詢)

        5. 調(diào)用其他asset的方法(可以實現(xiàn),只要是REST API形式暴露)

        6. 執(zhí)行結(jié)果返回(predix可以通過消息隊列返回數(shù)據(jù))

        

關(guān)鍵技術(shù)

JSON-SCHEMA

http://json-schema.org/,

 

用以描述JSON的數(shù)據(jù)結(jié)構(gòu)并做驗證,JSON-SCHEMA是靜態(tài)JSON描述,本身不具有任何約束力,需要在實現(xiàn)中加以限制:如執(zhí)行新增操作時必須驗證SCHEMA。

 

CASSANDRA

CASSANDRA是一個key-value數(shù)據(jù)庫,具有高性能,高可靠性,去中心化等特性,并支持GRAPH擴展。

 

http://www.cnblogs.com/loveis715/p/5299495.html 

GEL

如果數(shù)據(jù)只能存儲而不能查詢,那就沒有任何意義。predix定義了GEL語言用于查詢Asset數(shù)據(jù),該查詢語言是靈活的,支持分頁,過濾,正則表達式及關(guān)系查詢。Asset服務(wù)就是要存儲所有的模型數(shù)據(jù),因此不能針對具體需求做針對性的開發(fā)。

 

在Asset  Service中,專門存在查詢引擎(Graph Expression Lanauge Query Engine)完成這一功能,這也是工業(yè)云平臺開發(fā)中所必須的。

 

業(yè)界比對

這里主要與Thingwrox做比對,Thingworx更是一個物聯(lián)網(wǎng)平臺,而Predix是工業(yè)云平臺,定位不同,決定了這兩個平臺在設(shè)計上的取舍不同。

 

從建模進行比較,Thingworx弱化了多租戶概念,并且基于對類-對象的抽象,給出了Thing-ThingTemplate-ThingShape的模型,能夠?qū)γ恳晃锢?邏輯實體進行建模。如一個泵,或者是以datasource;而Predix更偏重與處理工業(yè)領(lǐng)域的物理實體映射,并不試圖建立一個包含一切的建模環(huán)境,這種取舍,在工業(yè)領(lǐng)域是可以理解的。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI