許曉偉,王西剛,林 鋒
(北京首信科技股份有限公司,北京 100015)
當前,萬物互聯的泛在接入[1]、物聯網海量的異構信息對物聯網技術的發展和應用提出了更高要求。在物聯網數據服務的各環節中,將終端設備數據匯聚上報到特定的邏輯節點[2],在邏輯節點上部署匯聚系統,并對數據進行統一的處理和管理,是實現物聯網數據有效應用的重要前提條件。傳統上,物聯網的數據匯聚方法是采用“煙囪式”的垂直模式,即終端與匯聚系統直接對接、獨立管理;但隨著物聯網終端部署規模的不斷擴大,匯聚系統接入物聯網終端的類型和數量不斷增加,且對接的協議與上報屬性越來越多,數據個性化要求越來越高,數據上報模塊的開發工作量及維護復雜度都急劇上升,這將導致匯聚系統和眾多終端廠商上報平臺不堪重負。
因此,在日益增多的物聯網終端不斷接入的情況下[3],針對物聯網個性化數據歸一匯聚實現方法的研究,有著極大的現實需求,能夠增強匯聚系統的自適應能力,提升對物聯網終端業務數據的動態適配能力,支撐物聯網數據的快速匯聚。
針對物聯網個性化數據的歸一匯聚,本文通過設計產品模板定制模塊和數據上報轉換模塊進行相關過程的處理。
物聯網終端廠商創建產品并基于產品完成上報模板的定制,如圖1所示。

圖1 產品模板
產品模板可配置的內容包括:(1)數據上報采用的協議,如HTTP、MQTT 等[4];(2)數據上報涉及的數據類型,包括設備、告警和心跳三類;(3)不同數據類型均支持配置公有屬性和自定義屬性;(4)模板中所有屬性均支持使用“自定義簡寫”,定制個性化key;(5)產品及產品模板信息將被持久化到匯聚系統并進行管理。
物聯網終端廠商使用配置好的產品模板,通過下面定義的數據上報轉換過程[5],完成數據上報,如圖2所示。

圖2 終端數據上報轉換過程
數據上報轉換的過程包括:(1)終端廠商基于創建的產品模板進行數據填報;(2)終端廠商使用匯聚系統開放的通用上報API,攜帶填報數據,進行上報;(3)匯聚系統對上報數據接口完成認證后,可以正常接入終端廠商上報的設備、告警、心跳等數據;(4)匯聚系統基于上報數據對應的產品模板進行屬性key 映射、轉換,最終得到匯聚系統定義的歸一化數據格式;(5)匯聚系統完成對上報數據的持久化處理。
匯聚系統數據來源包括各類物聯網終端和第三方終端廠商平臺,匯聚方式以終端或第三方應用平臺主動上報數據為主、匯聚系統調用查詢為輔。終端上報的數據包括但不限于終端固有屬性、位置信息、電量信息、網絡信息、業務信息、廠商標識、終端標識等。
匯聚系統支持HTTP、MQTT 等協議,支持對終端或第三方應用平臺的接入認證,支持物聯網數據傳輸上報[6],主要的匯聚功能包括終端注冊、更新、注銷,終端告警數據接入和健康心跳數據接入等,且匯聚系統的上報接口具備消息稽核能力,保證垂直應用平臺和匯聚系統數據一致性。
匯聚系統支持產品模板的定制,是對上報數據進行歸一化處理、轉化為系統統一標準數據以及對不同單位或量級的數據進行橫向匯聚處理的基礎。
2.1.1 行業個性化模板定制
物聯網感知層包含多種物聯終端設備,這些設備又歸屬于不同的行業類型[7],如煙感、地磁、水位傳感器、井蓋、紅外感知等,不同的行業具備通用和特有的屬性,通用的屬性如設備制造商、設備型號、網絡相關信息、設備IP、地理位置信息、經緯度信息、操作系統、剩余電量、設備已運行時間等。行業特有的屬性如煙感行業特有的煙霧濃度屬性、井蓋行業特有的水位高度屬性等。
匯聚系統支持行業模板配置管理能力,旨在為每個行業提供一套通用的行業模板屬性集,作為產品模板定義時的屬性來源。行業模板包括如下配置維度:屬性名稱、簡寫、單位、類型、層級屬性、描述等。
行業模板支持動態更新,可將多個產品模板中的屬性合并提升成為一個行業模板屬性,可將某個產品模板中的某個屬性合并到對應行業模板已有屬性中。行業模板的配置變動不影響已有的產品模板及已有的產品數據匯聚流程。
2.1.2 產品個性化模板定制
匯聚系統以設備歸屬的行業類型作為一級類ft(first_type),以設備來源廠商作為二級類st(second_type),二者聯合定義一個具備全局唯一性的產品,即一個產品就是某個廠商提供的某一行業類型設備的集合。
匯聚系統支持終端廠商通過自服務的方式創建所在行業的產品和產品模板。產品模板通過產品一級類(即行業類型)從該行業的行業模板中繼承獲取到設備、告警和心跳屬性集合。終端廠商創建產品模板時,優先選擇并使用行業模板屬性,當行業模板屬性不能滿足全部業務需要時,可以自定義擴展屬性[8]。
產品模板可配置維度包括:屬性名稱、簡寫、單位、類型、層級、自定義簡寫、描述等。其中“自定義簡寫”是能體現終端平臺上報屬性個性化的關鍵。“簡寫”是匯聚系統對某個屬性鍵的全局統一定義,而終端平臺可以在對應的自定義簡寫列中使用業務含義相同但屬性鍵不同的值進行模板填報,比如匯聚系統的某一個設備屬性是“設備編號”,匯聚系統將其定義簡寫為“di”,終端平臺中定義設備編號的屬性鍵假設為“device_code”,那該終端平臺在創建產品模板時,對應的“設備編碼”屬性的自定義簡寫可以填報為“device_code”,實際上報時也使用“device_code”作為設備編碼屬性的key 即可。同時,自定義簡寫的填報值還支持按“.”劃分父子層級,比如“a.b”表示終端平臺上報該屬性的實際JSON 結構為:{“a”:{“b”:“bvalue”}}。
產品模板支持屬性的默認值配置。當某屬性在模板中被配置為必填,但上報值為空時,匯聚系統將使用該模板的該屬性配置的默認值作為屬性上報值。產品及產品模板創建成功后會被匯聚系統持久化存儲。
2.2.1 數據上報接口調用
匯聚系統向各終端廠商提供一套通用的數據上報API 接口,該接口基于產品接收并處理終端廠商的上報準入認證、終端開銷戶、告警數據上報、心跳監控數據上報等[9]。
數據上報API 接口通過負載均衡網關對外提供,實現接口高并發和高可用。終端平臺依據匯聚系統提供的統一API規范完成上報客戶端接口編程,使用定制的產品及產品模板,編制上報請求體,向匯聚系統按照先設備注冊后上報告警數據的流程操作,同時定時發起設備的心跳健康監控數據上報。
2.2.2 規則引擎過濾處理
匯聚系統通用上報接口接收到終端上報的數據后,通過規則引擎模塊對數據進行合規性檢查過濾。規則列表包含:請求體整體格式檢查、上報數據產品標識匹配檢查、產品模板匹配及模板數據格式合法性校驗等。如果在規則檢測鏈中發現不合規則項,直接響應失敗消息并攜帶錯誤碼,避免不合法數據上報[10]。
規則引擎通過增強分布式協同,加強了數據多樣性執行,支持動態分布式部署以降低單服務器負載壓力,為匯聚系統提供足夠和必要的數據處理能力。
規則引擎使用規則庫、策略處理。引入分布式部署后,設備上報數據會通過隊列分發到不同的服務器,根據規則庫、策略分配進行篩檢處理,根據業務需要進行推送、落地及后續流程的繼續處理。規則引擎支持分布式擴展,當業務量增加時,匯聚系統對規則引擎動態擴展保證數據處理能力及擴展能力。
如圖3所示,具體規則處理流程如下:(1)首先規則引擎預加載所有設備唯一標識deviceId 與該設備掛鉤的規則表達式的對應關系到緩存;(2)當設備的上報數據到達規則引擎并需要進行規則校驗時,直接獲取上報的相關屬性與預加載的相應信息并計算出結果即可。

圖3 規則引擎處理流程
2.2.3 數據歸一化轉換處理
通過規則引擎校驗無誤后,匯聚系統認為上報數據是合法的,但該數據還不是匯聚系統要求的規范數據,需要進一步對上報數據進行歸一化轉換處理。
匯聚系統提供數據歸一化處理能力,依據對應的產品模板,對上報的個性化屬性進行映射轉換。根據上報數據的產品標識(ft、st)從匯聚系統獲取對應產品模板及屬性列表,遍歷屬性列表,逐屬性獲取“自定義簡寫”作為key 以及“簡寫”作為value,生成映射關系表T1;基于T1 中的key,對上報數據進行逐一匹配。定義T2 作為最終生成的匯聚系統規范JSON 對象。當匹配到結果時,使用T1 中的value 作為T2 的key,使用匹配到的上報數據值作為T2 的value,最終得到的T2 是符合匯聚系統統一數據格式規范的JSON 對象數據。匯聚系統將T2 按不同的數據類型(設備、告警、心跳)將上報數據歸入對應的消息平臺隊列主題中,完成數據的歸一化匯聚。
匯聚系統消息隊列各主題的各訂閱服務分別產生消費數據,會依次完成數據匯聚持久化處理、數據統計分析、數據北向應用處理等后續系列數據應用場景的業務流程。
近年來,物聯網產業蓬勃發展,數以億計的泛感知終端設備接入網絡形成海量數據,物聯網應用呈現爆發性增長。在物聯網終端不斷增多并持續接入的場景下,本文所述的物聯網個性化數據歸一匯聚的實現方法,強化了匯聚系統的數據匯聚功能,增強了對個性化數據的歸一處理能力,有力支撐了終端廠商個性化數據的上報,可促進支持物聯網業務數據的匯聚接入,推動物聯網應用的發展。