朱 斌,林 帆
(南京熊貓漢達科技有限公司,南京 210014)
衛(wèi)星地球站監(jiān)控系統(tǒng)負責對地球站內(nèi)所有設(shè)備的實時狀態(tài)、數(shù)據(jù)、告警等進行監(jiān)控,針對監(jiān)控設(shè)備的接口、協(xié)議、狀態(tài)、數(shù)據(jù)類型的異構(gòu)問題,通過設(shè)計的統(tǒng)一、標準、可讀的模型進行資源表征,站內(nèi)監(jiān)控系統(tǒng)與設(shè)備接口、上層應用接口之間實現(xiàn)應用與數(shù)據(jù)接口的統(tǒng)一化、標準化、通用化,其北向接口服務而采用遵循RESTful Web Service 設(shè)計規(guī)范,是面向?qū)ο蠡蛘呱蠈佑脩籼峁┩陚涞男畔⒔换ソ涌?,通過HTTP 協(xié)議訪問URI 接口(API)來完成數(shù)據(jù)請求和響應,來提高系統(tǒng)的分布性能、集群性能和松耦合性能。
REST(Representational State Transfer)是指資源的表現(xiàn)層狀態(tài)轉(zhuǎn)化。而“資源”就是能夠通過特定URI(統(tǒng)一資源定位符)進行訪問的實體,它可以是一段文本、一張圖片、一首歌曲、一種服務。以不同的URI 形式來表示系統(tǒng)中的同一個資源,通過請求響應方法,從而減少對服務端、客戶端的限制,提高接口服務的松耦合性。
RESTful Web Service 是目前流行的遵循REST 設(shè)計規(guī)范,面向資源的輕量級Web 服務。具體來說,客戶端和服務器的交互按照HTTP 協(xié)議定義的4中動詞:GET 用來獲取資源,POST 用來新建資源,PUT 用來更新資源,DELETE 用來刪除資源,對系統(tǒng)的資源進行增刪改查操作。
基于REST 規(guī)范的接口服務就是將系統(tǒng)中所有訪問的實體都抽象成資源,并賦予其唯一的資源標識符,通過制定統(tǒng)一的RESTful API 接口規(guī)范對外界提供各種資源服務。
該接口規(guī)范主要有以下4個特征:資源的可標識性、無狀態(tài)性、連通性和接口統(tǒng)一性。可標識性指一個應用將其訪問的實體集中有價值的部分作為資源,通過URI 的形式表征出來。無狀態(tài)性指每個HTTP 請求都是無狀態(tài)且獨立的,由于不需要保存當前會話狀態(tài),因此在系統(tǒng)集群時不會受會話復制的約束,從而可以提高系統(tǒng)的伸縮性。連通性是指要求資源通過它們的表征方式彼此相連。接口統(tǒng)一性是指對資源的操作都通過HTTP 接口協(xié)議定義的4個方法來實現(xiàn),通過詳細接口服務的設(shè)計、開發(fā)和描述,而且在系統(tǒng)集成時便于服務的發(fā)現(xiàn)和自動匹配。
圖1 系統(tǒng)結(jié)構(gòu)圖
(1)資源模型管理模塊。針對監(jiān)控設(shè)備的接口、協(xié)議、狀態(tài)、數(shù)據(jù)類型的異構(gòu)問題,通過設(shè)計的統(tǒng)一、標準、可讀的模型進行資源表征,科學合理表示待測參數(shù)并豐富數(shù)據(jù)字典,可以通過模型數(shù)據(jù)集合,對各類設(shè)備進行XML 形式抽象建模。
(2)異構(gòu)接口數(shù)據(jù)適配。管控設(shè)備的下層數(shù)據(jù)采集接口類型豐富多樣,涵蓋UDP、串口、SNMP 等,數(shù)據(jù)適配主要自動適配不同接口種類,封裝成統(tǒng)一化、標準化、通用化的業(yè)務資源,用k-v 鍵值錄到資源模型庫Map 中,使集成平臺可以使用統(tǒng)一資源標識符實現(xiàn)對異構(gòu)資源的讀寫操作,功能如圖2所示。
(3)動態(tài)資源監(jiān)視服務。綜合監(jiān)視服務是實時對底層提供的天線設(shè)備、饋電設(shè)備、通信設(shè)備、輔助設(shè)備等數(shù)據(jù)、狀態(tài)、告警信息進行監(jiān)控,并根據(jù)相應個性化配置,系統(tǒng)自動對關(guān)鍵參數(shù)的變化情況進行記錄,并存儲在數(shù)據(jù)庫中。
(4)安全日志管理。安全管理服務對用戶的設(shè)備控制動作、故障事件進行自動監(jiān)控及消息推送,并存入數(shù)據(jù)庫中,形式化輸出事件信息。該模塊貫穿整個系統(tǒng)的功能模塊,它具有攔截和過濾功能。對于用戶的任何操作,都要進行權(quán)限管理、數(shù)據(jù)安全、操作日志等操作判定。
圖2 底層適配服務
(5)數(shù)據(jù)視圖服務。綜合展示服務是以可視化拓撲圖元形式,對用戶提供的數(shù)據(jù)、狀態(tài)、告警、報表、日志等展示,展示的具體形式包括圖形、列表、文字等形式,該數(shù)據(jù)視圖展示服務也向用戶提供個性化定制,使得內(nèi)容更加豐富直觀。
(6)北向服務接口。對外提供北向接口服務,并遵循RESTful Web Service 設(shè)計規(guī)范,是面向資源的輕量級Web 服務,使用戶關(guān)心應用層的數(shù)據(jù)傳輸服務,通過HTTP 協(xié)議訪問URI 接口(API)來完成數(shù)據(jù)請求和響應。
衛(wèi)星管控系統(tǒng)所管轄的設(shè)備種類和數(shù)量龐大,且在后續(xù)推廣應用中會持續(xù)進行擴充變更,所以首先應對資源模型的元信息進行數(shù)據(jù)建模?;赬ML 化的對象資源數(shù)據(jù)模型能夠保證數(shù)據(jù)模型的可擴展能力,相對于關(guān)系型數(shù)據(jù)存儲模式,通過XML 存儲數(shù)據(jù)具有通俗易懂的標注型數(shù)據(jù)格式、層次分明的數(shù)據(jù)格式、靈活的數(shù)據(jù)存儲方式、統(tǒng)一標準的兼容等優(yōu)勢。描述一個整站全類資源(對象)需要包含對象的屬性、行為和方法等信息,如以下代碼:
表1 整站資源對象描述
根據(jù)以上代碼,可以建立root、type、device 三個類對其進行序列化操作:
表2 資源對象序列化
其次,站內(nèi)每個資源(對象)的參數(shù)也要建立統(tǒng)一格式的數(shù)據(jù)模型庫,主要包括狀態(tài)參數(shù)ID、參數(shù)名、參數(shù)值、閾值等參數(shù)信息。需要注意的是,該數(shù)據(jù)模型需要包含用戶操作和關(guān)心的參數(shù)描述信息,如下表所示。同時,數(shù)據(jù)適配層也要對其他狀態(tài)信息、變化信息的建立統(tǒng)一格式的數(shù)據(jù)模型。
表3 參數(shù)模型
管控系統(tǒng)在設(shè)備和用戶之間需采集處理不同廠商的異構(gòu)數(shù)據(jù)接口,本文設(shè)計了基于任務的數(shù)據(jù)采集適配服務,不僅要生成系統(tǒng)的“讀”接口,還可給用戶生成“寫”接口??筛鶕?jù)以下原則進行數(shù)據(jù)適配工作:
(1)對于相同類型的設(shè)備,以單例模式創(chuàng)建處理可啟動/停止的任務,本文采用基于Quartz 的調(diào)度任務,負責采集設(shè)備的原始數(shù)據(jù)信息。
(2)對于設(shè)備狀態(tài)信息,根據(jù)標準數(shù)據(jù)模型,將異構(gòu)的原始接口(含UDP、串口、SNMP 協(xié)議等)信息建立統(tǒng)一格式的可見數(shù)據(jù)。
(3)對于設(shè)備設(shè)置參數(shù),可以接受json/XML 等RESTful 規(guī)范的明文設(shè)置信息,并以及時響應json/XML 格式的信息。
(4)將采集和適配的信息進行分類存儲,包含狀態(tài)信息、參數(shù)信息、故障信息、拓撲信息等。
(5)對于原始接口的屬性修改、數(shù)量擴展等動態(tài)改變,要進行實時的更新匹配。
(6)對于設(shè)備的設(shè)置信息,需要提供寫接口,并要求對每個寫接口進行相應的RESTful 規(guī)范響應信息。
數(shù)據(jù)適配通常只負責數(shù)據(jù)的歸納入庫,而綜合監(jiān)視服務是根據(jù)設(shè)定的規(guī)則或用戶需求等輸入,對相應數(shù)據(jù)進行動態(tài)監(jiān)測、歷史分析、告警監(jiān)視等分類提供服務,本文總結(jié)了以下服務:
(1)設(shè)備數(shù)據(jù)監(jiān)控管理。與底層適配模塊進行監(jiān)控管理信息交互,對適配數(shù)據(jù)進行監(jiān)測、管理、告警等數(shù)據(jù)監(jiān)測服務,及時納入服務層內(nèi)存緩存和數(shù)據(jù)庫。
(2)關(guān)鍵狀態(tài)變化監(jiān)測。根據(jù)相應配置,系統(tǒng)可對關(guān)鍵參數(shù)設(shè)定閾值,自動記錄變化情況,并存儲在數(shù)據(jù)庫中。
(3)歷史數(shù)據(jù)分析。軟件對監(jiān)測的歷史數(shù)據(jù)進行演變分析,形式化輸出統(tǒng)計信息;軟件對控制進行監(jiān)控,并存入數(shù)據(jù)庫中,形式化輸出事件信息;軟件對故障事件進行監(jiān)控,并存入數(shù)據(jù)庫中,形式化輸出事件信息。
(4)預案計劃管理。用戶可以從某個預案中選擇性編輯、刪除設(shè)備某個參數(shù),并保存該預案。用戶可以選擇性下發(fā)設(shè)備當前參數(shù),或者批量下發(fā)預案中保存的設(shè)備參數(shù)。
(5)推送消息服務。對用戶提供定制的數(shù)據(jù)、狀態(tài)、告警、報表、日志等json/XML 格式規(guī)范的消息。
后端服務中控制器使用RESTful 接口實現(xiàn)API 與用戶的資源訪問處理,其使用HTTPs 協(xié)議。用戶請求的url 使用同一個url而用請求方式,包括GET(SELECT),POST(CREATE),PUT(UPDATE),PATCH(UPDATE),DELETE(DELETE),形 成一個統(tǒng)一的接口,其中交互數(shù)據(jù)格式為輕量級數(shù)據(jù),則格式采用JSON 格式化,若為重量級數(shù)據(jù),格式采用XML 格式化。
(1)配置管理接口
表4 配置管理API分類1
(2)狀態(tài)信息接口
表5 配置管理API分類2
(3)告警信息接口
表6 配置管理API分類3
(4)設(shè)備參數(shù)接口
表7 配置管理API分類4
(5)操作控制接口
表8 配置管理API分類5
(6)歷史數(shù)據(jù)分析接口
表9 配置管理API分類6
(7)規(guī)劃預案管理接口
表10 配置管理API分類7
基于RESTful 規(guī)范的管控系統(tǒng)在北向的任務配置下發(fā)和設(shè)備狀態(tài)上報處理上,采用RESTful Service 服務API 接口。針對面向活動和面向資源的不同,采用不同的協(xié)議進行任務下發(fā)和狀態(tài)獲取。實現(xiàn)站控內(nèi)部、設(shè)備級、上級管控之間的接口交互的標準化,將各種分散的異構(gòu)資源映射到邏輯參照體系上,并通過定義統(tǒng)一的資源元模型和數(shù)據(jù)存取接口屏蔽各系統(tǒng)間的數(shù)據(jù)格式差異,使得站內(nèi)監(jiān)控系統(tǒng)與設(shè)備接口、上層應用接口之間實現(xiàn)應用與數(shù)據(jù)接口的統(tǒng)一化、標準化、通用化。
基于RESTful Web 規(guī)范的衛(wèi)星站監(jiān)控軟件按照通用的三層結(jié)構(gòu)設(shè)計,底層為協(xié)議適配層,中間層為綜合監(jiān)視服務層,頂層為用戶表示層,另外還有貫穿系統(tǒng)全局的安全管理層,有連接本系統(tǒng)與其他系統(tǒng)的外部接口和系統(tǒng)內(nèi)部數(shù)據(jù)交換的外部接口功能。通過北向接口服務,構(gòu)建各個類型的功能服務的擴展及構(gòu)建,使得不同系統(tǒng)生產(chǎn)者和消費者之間能夠進行異步數(shù)據(jù)通信服務,提高了WEB 系統(tǒng)前端后臺分離度、異構(gòu)數(shù)據(jù)通信的時間、空間的多維松耦合。