趙博揚 王勇



摘 要:首先對主流輕量級應用層通信協議進行研究,結合各類協議的優缺點,以及健康監測大數據平臺的應用環境,探索了一種在客戶端服務器模式下的應用層通信協議。它遵循應用層協議設計要求,采用應用層協議廣泛使用的ASN.1語言進行協議描述。在調研用戶群體、設備端和健康監測大數據平臺三者之間關系以及健康監測大數據環境獨有特點的情況下,設計了用于設備端與健康監測大數據平臺進行協議交互的各種操作請求,在編解碼方面選擇了相對于XML有更好效率的BER編解碼方法,使得網絡帶寬利用率更加充分。
關鍵詞:健康監測;大數據;通信協議;異構性
DOI:10.11907/rjdk.171486
中圖分類號:TP393 文獻標識碼:A 文章編號:1672-7800(2017)009-0173-04
Abstract:The article firstly design a application layer protocol in C/S server model to montor physiological parameter after we study advantages and defects of many protocols,environments of big data platform that monitors healthy information.The specific designation of protocol takes ASN.1 that is used to describe many application layer protocols.We design operational requests based on between triadic relation of users,devices and platform and unique features of healthy information.We used BER as a method of coding and decoding data so that it can improve efficiency of network transmission.
Key Words:health monitoring; big data; communication protocol; heterogeneity
0 引言
健康監測數據與每一個人息息相關,成熟的健康大數據應用擁有潛在的大規模用戶,而且與健康相關的數據種類和數量龐大,決定了健康監測數據巨大的數據量(Volume)。而人們健康狀況的實時采集和監測,使健康監測數據具有較快的產生速度(Velocity)。健康監測類設備功能和原理的多樣性,決定了來自健康監測類設備的健康監測數據的廣泛異構性(Variety),如存在結構化數據、音視頻流數據、時空數據等多種數據形態。毫無疑問,健康監測數據具有巨大的價值(Value),即健康監測數據具有典型的大數據“4V”特性[1-5]。
由于健康監測類設備從功能、原理、生產廠商和型號等多個方面存在著異構性,因此在健康監測數據接入健康監測數據云中心時,需要一種統一的接入協議來屏蔽設備的異構性,如圖1所示。
1 大數據接入協議設計
健康大數據統一的接入協議是一個應用層協議,該協議模型和Internet模型的層次結構如圖2所示。
由于現階段人體健康監測設備沒有具體的行業標準,傳輸協議眾多,為了保證數據的統一性和權威性,筆者在查閱了相關醫學類文獻后,結合大量應用層協議設計原則[6-8],設計了用于健康大數據監測的協議。使用該協議可以采集標準化的健康數據發送至云中心端進行存儲,相關協議設計完成后,再以Java語言為基礎進行通信協議工具包的開發。
1.1 健康監測數據字典模型設計
健康數據集采用中華人民共和國衛生行業標準制定的城鄉居民健康檔案基本數據集[9],該標準規定了城鄉居民健康檔案基本數據集的元數據屬性和數據元目錄。數據元目錄包括城鄉居民健康檔案的個人基本信息、健康體檢信息、重點人群健康管理記錄和其它醫療衛生服務記錄的相關數據元。本標準適用于城鄉居民健康檔案的信息收集、存儲與共享,以及城鄉居民健康檔案管理信息系統建設。本文擬采用含有OID的分級、樹形命名空間描述各類健康數據,根據合理的等級建立層次級別,以此形成一棵健康數據模型樹。健康監測數據模型如圖3所示。
1.2 協議交互消息設計
由于需要接收眾多設備的數據,故傳輸的數據類型歸為2種,分別為:結構化數據和非結構化數據。所謂結構化數據即行數據,其存儲在數據庫里,可以用二維表結構來邏輯表達實現的數據;非結構化數據是指其字段長度不等,并且每個字段的記錄又可由可重復或不可重復的子字段構成數據庫,包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻、視頻信息等。針對不同數據類型設計了不同的交互協議,整體設計如圖4所示。
為了滿足結構化、非結構化數據的需求,設計消息結構如下:
(1)Insert操作:①用于客戶端將收集到的健康數據發送至云中心進行保存,針對兩種格式:結構化數據如圖5所示,非結構化數據如圖6所示,采用不同的結構化數據庫MySql和非結構化數據庫MongoDB保存不同信息,確保了最高的存取效率;②結構化數據的參數信息采納了城鄉居民健康檔案中定義的信息,以保證信息的權威性和標準性。對于非結構化數據,顯現了設備端的自身特點,將其相關信息一并放入云中心,以待后續的數據挖掘工作。
(2)Reply操作:①用于客戶端首次連接到云中心進行初始登錄驗證,云中心給予相關設備的具體反饋;②用于客戶端發送了無法解析、不符合協議規定的數據;③用于云中心自身錯誤造成的數據接收問題或無法入庫的情況,使用該操作通知用戶重新發送歷史信息。具體設計如圖7所示。endprint
Init操作:設備初次登錄到云中心,將設備狀態信息反饋至服務器端。具體設計如圖8所示。
1.3 編解碼方案設計
由于業務平臺不同、網絡帶寬以及傳輸數據量大小不同,會有眾多的編解碼方式,總體而言,可以歸結為兩大類型:基于字符串的編碼和基于二進制流的編碼,兩種編碼的優缺點各不相同。基于字符串的編碼形式容易書寫、閱讀,實現方式簡單,編碼成本低,便于程序調試,缺點是會占用較多帶寬;二進制方式的編碼雖然不易書寫,可讀性差,編程方式相對于字符串會復雜許多,但是其優勢也顯而易見,如占用帶寬少、節省資源,更適用于對性能要求較高的情況。綜上所述,本文選用TLV的編解碼方式作為該協議應用層的編解碼方案。
TLV[10]指由數據類型Tag、數據的長度Length、數據值Value組成的結構體,幾乎可以描述任意數據類型,TLV的Value也可以是一個TLV結構。
為了便于通信雙方以一致的方式進行數據轉換,需要制定協議的基本數據類型。根據健康監測數據集可以看出,所有表中的健康數據字段可以歸為5大類,分別是字符串型、布爾型、整型、浮點型以及日期類型。為了保證協議中的基本數據類型能夠覆蓋所有字段,在此之上適當為后續可能出現的數據類型留下擴展空間,接入協議制定了13種基本數據類型,如表1所示。
1.4 傳輸層協議設計
由于該協議針對的設備眾多,像穿戴設備、醫療器械以及健康監測設備等,每個器材的使用場景和對數據實時性的要求也不盡相同,所以為了能夠滿足不同場景的需要,最大程度地減小網絡負荷,在做到實時性、準確性的同時充分運用計算機和網絡性能,采取了傳輸層協議選擇綁定的方式,分別是TCP協議綁定和UDP協議綁定兩種形式[11]。
TCP是面向連接的通信協議,通過三次握手建立連接,通訊完成時要拆除連接。由于TCP是面向連接的,所以只能用于端到端的通訊。TCP提供的是一種可靠的數據流服務,采用“帶重傳的肯定確認”技術實現傳輸的可靠性。
UDP是面向無連接的通訊協議,UDP數據包括目的端口號和源端口號信息,由于通訊不需要連接,所以可以實現廣播發送。UDP通訊時不需要接收方確認,屬于不可靠的傳輸,可能會出現丟包現象,實際應用中要求程序員編程驗證。具體架構如圖9所示。
2 統一的數據接入協議軟件實現
采用Java語言包的形式研制協議支持軟件包,相關核心類如下:
TLV類:用于定義TLV類型,設置該數據相關參數。
TlvUtils類:用于相關TLV數據包內容的編解碼功能。
Tag類:定義各類指令、狀態等信息。
Package類:用于封裝應用層協議以及相關操作。
UdpTransportMapping類:封裝了傳輸層的UDP傳輸方式以及相關操作。
TcpTransportMapping類:封裝了傳輸層的TCP傳輸方式以及相關操作。
3 實驗
3.1 系統運行環境
硬件環境為Intel Core i5-3470 3.2G CPU,4G內存;軟件環境為Windows7 Professional;網絡環境為100M局域網。
測試策略:因為協議無法直觀地進行測試,故將服務器端與客戶端均按照協議包進行通信,看是否能夠順利通信,并觀察在多個客戶端同時通信過程是否正常。
3.2 功能性測試
3.3 壓力測試
壓力測試如表3所示。
3.4 穩定性測試
穩定性測試如表4所示。
綜合以上測試情況,通過該協議,通信雙方均可以建立可靠連接,在性能方面能夠保證大數據量和一周內持續運行,無內存溢出、內存泄漏等問題,可滿足工程穩定性要求。
4 結語
該協議成功屏蔽了設備之間的異構性,選擇了專業、翔實的健康數據集,使得所有數據能夠以統一、完整、權威的內容進行保存,方便了后續的數據挖掘工作。為了滿足收集不同異構設備健康監測數據的需求,在協議設計上,充分考慮了健康監測數據的“4V”特性,對交互報文與交互命令的設計以及交互過程的規范進行了研究,并設計了相關操作指令。同時該協議選擇了效率較高的BER編碼方式和TCP或UDP傳輸模式,使其能夠滿足各種場合的使用要求。
參考文獻:
[1] 顏延,秦興彬,樊建平,等.醫療健康大數據研究綜述[J].科研信息化技術與應用,2014,5(6):3-16.
[2] KUO M, SAHAMA T, KUNSHNIRUK A, et al. Health big data analytics: current perspectives, challenges and potential solutions[J].International Journal of Big Data Intelligence, 2014(1/2):114-126.
[3] SCHNEEWEIESS S. Learning from big health care data[J]. The New England Journal of Medicine, 2014(6):2161-2163.
[4] WANG Y, KUNG L, TING C, et al. Beyond a technical perspective: understanding big data capabilities in health care[J]. HICSS, 2015:3044-3053.
[5] GROVES P, KAYYALI B, KNOTT D, et al. The big data revolution in healthcare[J]. McKinsey&Company, 2013(4):1-22.
[6] 曾澤熠.基于CoAP的家庭網絡通信協議的設計與實現[D].北京:北京交通大學,2013.
[7] 宋蒙.基于網絡編碼的TCP協議原型設計與實現[D].北京:北京郵電大學,2012.
[8] 王巖.應用層協議識別技術研究[D].西安:西安電子科技大學,2012.
[9] WS 365-2011,城鄉居民健康檔案基本數據集[S].北京:中華人民共和國衛生部,2011.
[10] 王沁,許娜,張燕,等.優化TLV編碼規則[J].計算機科學,2008(11):11-14.
[11] 何潤岸.基于UDP進行大規模數據傳輸的可靠傳輸系統的設計與實現[D].濟南:山東大學,2015.
(責任編輯:黃 健)endprint