諶建飛,鄧 敏,唐俊龍,文勇軍 ,唐立軍
1.長沙理工大學(xué) 物理與電子科學(xué)學(xué)院,長沙 410114
2.近地空間電磁環(huán)境監(jiān)測與建模湖南省普通高校重點實驗室,長沙 410114
遠(yuǎn)程實驗是一種自動化遠(yuǎn)程交互控制的全實物新型實驗?zāi)J?,具有真實儀器控制、網(wǎng)絡(luò)在線操作和實驗資源共享等特點[1-2]。近年來,隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,基于互聯(lián)網(wǎng)的遠(yuǎn)程實驗受到越來越多人們的關(guān)注,各大高校紛紛建立了自己的遠(yuǎn)程實驗平臺,開展了物理、化工、機(jī)械、電氣等專業(yè)課程的實驗應(yīng)用[3-5],有效促進(jìn)了實驗資源的共享和教學(xué)能力的提高。目前,對遠(yuǎn)程實驗的研究工作主要注重在實驗平臺與實驗應(yīng)用的開發(fā)上,因缺乏實時可靠消息傳輸、通信安全控制以及應(yīng)對大規(guī)模實驗儀器與用戶并發(fā)訪問的能力,導(dǎo)致不能全方位對外開放[6-8]。
圖1 遠(yuǎn)程實驗通信方案
隨著消息隊列遙測傳輸技術(shù)(Message Queuing Telemetry Transport,MQTT[9])在智能家居、智能物流、地質(zhì)災(zāi)害預(yù)警和工業(yè)遠(yuǎn)程監(jiān)控中的成功應(yīng)用,為開放式遠(yuǎn)程實驗的通信研究開辟了新思路。MQTT是由IBM公司于1999年開發(fā)的即時通訊協(xié)議,并于2014年成為推薦的物聯(lián)網(wǎng)傳輸協(xié)議標(biāo)準(zhǔn),采用“發(fā)布/訂閱”模式,具有輕量級、快速、低延時、可擴(kuò)展等特點[10]。與XMPP、SIMPLE協(xié)議相比,MQTT專門針對傳感器網(wǎng)絡(luò)優(yōu)化設(shè)計,具有更小的通信開銷,能夠有效節(jié)省控制器的計算資源和流量,承載海量終端信息傳輸,提高通信的實時性和可靠性[11-12]。目前,基于MQTT的開源服務(wù)器實現(xiàn)主要有Mosquitto、HiveMQ和EMQ[13]等,EMQ基于高并發(fā)Erlang/OTP語言平臺設(shè)計,支持MQTT-SN[14]與Web-Socket協(xié)議和分布式集群部署,具有更強的并發(fā)性能,能夠承載物聯(lián)網(wǎng)終端的海量MQTT并發(fā)連接,成為遠(yuǎn)程實驗通信的可靠選擇。
因此,本文以MQTT為核心,從實驗儀器與用戶并發(fā)訪問、實時可靠消息傳輸、網(wǎng)絡(luò)安全控制和儀器安全保障四方面開展研究,探索一種能夠?qū)崟r連接大規(guī)模傳感器網(wǎng)絡(luò)并適用于高并發(fā)訪問的遠(yuǎn)程實驗通信方案,為遠(yuǎn)程實驗的對外開放和實驗通信技術(shù)的發(fā)展提供參考依據(jù)。
遠(yuǎn)程實驗平臺對外開放需要解決并發(fā)性、實時性、可靠性和安全性問題,其通信系統(tǒng)需要滿足以下需求:(1)通信并發(fā)連接數(shù)達(dá)到百萬級,每秒消息傳輸能力不低于50 000條;(2)通信時延小于300 ms,消息傳輸成功率大于98%;(3)提供通信服務(wù)質(zhì)量和消息順序控制保證;(4)建立用戶實名制訪問,儀器授權(quán)管理和實驗數(shù)據(jù)安全傳輸;(5)提供通信失效儀器安全保護(hù)和通信自愈。
根據(jù)以上分析,選擇MQTT技術(shù)來構(gòu)建遠(yuǎn)程實驗通信網(wǎng)絡(luò)。方案設(shè)計如圖1所示。系統(tǒng)從結(jié)構(gòu)上分為儀器控制端、Web用戶端和通信服務(wù)中心。儀器控制端由實驗儀器、傳感器、致動器和控制器組成,Web用戶端由HTML5、WebSocket和教育電子身份號(E2ID)技術(shù)[15]支持,通信服務(wù)中心由通信服務(wù)器、數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器組成。
通過搭建基于MQTT的EMQ消息推送服務(wù)器集群來解決遠(yuǎn)程實驗通信的并發(fā)性能問題;結(jié)合嵌入式和WebSocket技術(shù)來解決實驗儀器的接入和Web用戶的訪問問題;結(jié)合SSL/TLS和E2ID技術(shù)來解決遠(yuǎn)程實驗通信的網(wǎng)絡(luò)安全控制問題;結(jié)合MQTT的通信服務(wù)質(zhì)量保證機(jī)制并設(shè)計消息順序控制機(jī)制來確保消息的實時可靠傳輸;結(jié)合MQTT的遺囑機(jī)制設(shè)計儀器安全保障與通信自愈機(jī)制來解決通信失效和實驗儀器的安全保障問題。方案中將通信與實驗業(yè)務(wù)邏輯分離,解除應(yīng)用程序耦合,使通信設(shè)計靈活獨立,易于擴(kuò)展,并可根據(jù)需求提升通信處理能力。
實驗儀器在傳感器、致動器和控制器的協(xié)調(diào)控制下完成實驗操控和數(shù)據(jù)采集。大規(guī)模的實驗儀器借助于嵌入式設(shè)備進(jìn)行網(wǎng)絡(luò)接入,而用戶通過Web進(jìn)行高并發(fā)訪問,對實驗通信性能提出了不小的挑戰(zhàn)。通過進(jìn)行EMQ集群設(shè)計、通信話題設(shè)計和儀器與用戶接入優(yōu)化設(shè)計來解決實驗儀器與用戶并發(fā)訪問問題。
3.1.1EMQ集群設(shè)計
為使通信并發(fā)連接能力達(dá)到百萬級且每秒消息傳輸能力不低于50 000條,采用構(gòu)建分布式通信集群的方法解決該問題,設(shè)計方案如圖2所示。
圖2 EMQ通信集群方案
EMQ服務(wù)器單節(jié)點在8核28 GB系統(tǒng)配置下,SSL單向認(rèn)證穩(wěn)定連接數(shù)在20~25萬,每秒消息傳輸能力不低于2萬條[13],因此集群規(guī)模設(shè)計根據(jù)實驗通信需求和單節(jié)點性能選用5較為合適。各節(jié)點之間采用EMQ自身提供的基于靜態(tài)節(jié)點列表自動集群創(chuàng)建方法,在EMQ配置文件中配置需要加入集群的各節(jié)點名“Name@Host”,Host為IP地址或FQDN(主機(jī)名、域名),在EMQ集群啟動時,系統(tǒng)根據(jù)配置文件中的節(jié)點列表,依次將各節(jié)點連接到集群,實現(xiàn)系統(tǒng)互聯(lián)與路由共享。在集群的外部添加Azure負(fù)載均衡服務(wù)器,使用5元組哈希(包括源IP、源端口、目標(biāo)IP、目標(biāo)端口和協(xié)議類型)分發(fā)策略將流量映射到各可用EMQ服務(wù)器上。在Azure負(fù)載均衡器上,采用動態(tài)探測與最小連接數(shù)優(yōu)先算法,通過對集群各節(jié)點監(jiān)聽端口進(jìn)行偵聽,如果響應(yīng)正常,則再根據(jù)各節(jié)點建立的連接數(shù)統(tǒng)計,選用具有最小連接數(shù)的節(jié)點建立通信,實現(xiàn)動態(tài)負(fù)載均衡。當(dāng)多次偵聽響應(yīng)失敗時,停止向該節(jié)點發(fā)起通信連接。
EMQ集群的設(shè)計方案能有效提高通信的并發(fā)處理能力,實現(xiàn)動態(tài)擴(kuò)容,并解決服務(wù)器單點故障問題。
3.1.2 通信話題設(shè)計
MQTT基于話題進(jìn)行消息路由,為確保每組實驗儀器與用戶間通信的獨立性,通信話題采用層次化功能劃分設(shè)計,具體如下:“commun/{institution_id}/{device_id}/{function}”?!癱ommun”表示實驗通信業(yè)務(wù)的最高級與其他實驗業(yè)務(wù)區(qū)分;“{institution_id}”表示實驗儀器所在的單位或機(jī)構(gòu)的唯一標(biāo)識;“{device_id}”表示具體實驗儀器的唯一標(biāo)識;“{function}”表示功能分類,包含“status”“operation”“data”,分別用于儀器的狀態(tài)監(jiān)控、操作控制和實驗數(shù)據(jù)分發(fā)。
3.1.3 儀器與用戶接入優(yōu)化設(shè)計
實驗儀器與Web用戶的接入直接關(guān)系到遠(yuǎn)程實驗通信性能與交互效率。當(dāng)前大多實驗平臺采用Socket和Ajax輪詢通信方案,需要自下向上對通信交換協(xié)議進(jìn)行設(shè)計,并存在資源消耗過大問題。MQTT已經(jīng)針對物聯(lián)網(wǎng)做了大量的優(yōu)化工作,將協(xié)議交換最小化,報文結(jié)構(gòu)緊湊,最小報文長度只有2字節(jié),因此采用MQTT來優(yōu)化儀器與用戶接入,以實現(xiàn)嵌入式設(shè)備和Web端的計算資源優(yōu)化并降低網(wǎng)絡(luò)流量。
實驗儀器與用戶都通過MQTT消息通信模塊進(jìn)行網(wǎng)絡(luò)接入,MQTT消息通信模塊包含通信連接建立、心跳維持、消息發(fā)送與消息接收功能。在儀器控制端構(gòu)建MQTT通信網(wǎng)關(guān),傳感器與致動器通過I/O口、串口或無線模塊與控制器連接,向上通過基于TCP的MQTT與EMQ集群通信,對不支持TCP/IP協(xié)議棧的設(shè)備使用MQTT-SN,該方法能有效降低控制器資源消耗與網(wǎng)絡(luò)流量。Web用戶端采用基于WebSocket技術(shù)的MQTT與EMQ集群相連,實現(xiàn)用戶的接入,WebSocket可以建立服務(wù)器與瀏覽器之間的持久化通信連接,與Ajax輪詢相比能大幅減少Web端的網(wǎng)絡(luò)流量與通信時延。
“低延時、高可靠”對實驗操作體驗至關(guān)重要,以往的遠(yuǎn)程實驗缺乏相應(yīng)的通信服務(wù)質(zhì)量保證。另外,MQTT只提供了簡單的消息順序控制,在網(wǎng)絡(luò)不穩(wěn)定的情況下連續(xù)發(fā)送多個消息時,雖然能保證消息的可靠傳輸,但并不能很好的保證消息的順序接收。因此,通過利用MQTT的通信服務(wù)質(zhì)量保證和消息順序控制機(jī)制來確保消息的實時可靠傳輸。
3.2.1 通信服務(wù)質(zhì)量保證設(shè)計
根據(jù)實驗數(shù)據(jù)傳輸要求與網(wǎng)絡(luò)狀態(tài),MQTT提供三種不同的通信服務(wù)質(zhì)量保證,分別為QoS0盡力而為、QoS1至少一次、QoS2恰好一次,針對這三種通信服務(wù)質(zhì)量對實驗通信的消息傳輸進(jìn)行控制。對于實驗中單次數(shù)據(jù)丟失不會影響實驗結(jié)果的情況,采用QoS0傳輸消息,消息發(fā)送者只管發(fā)送消息,不確認(rèn)消息的丟失,用于實驗環(huán)境監(jiān)測數(shù)據(jù)采集;對于必需可靠傳達(dá),但收到重復(fù)的消息也不受影響的情況,采用QoS1傳輸消息,消息接收者如果沒有知會或者知會本身丟失,消息發(fā)送者會再次發(fā)送以保證消息接收者至少會收到一次,用于實驗儀器的狀態(tài)數(shù)據(jù)傳輸;對于消息的丟失和重復(fù)會造成實驗出錯的情況,采用QoS2傳輸消息,可確保接收者收到且只收到一次該消息,用于實驗參數(shù)調(diào)節(jié)與儀器的交互控制。
3.2.2消息順序控制設(shè)計
為了確保消息的順序控制,對同一會話下的所有消息添加消息序號管理。實驗儀器和用戶在建立連接時初始化并同步各自消息的序號,發(fā)送端在發(fā)送消息時對消息進(jìn)行編序,并暫時保存當(dāng)前信息。接收端對接收到的消息序列號進(jìn)行檢查,通過對比上一條消息的序列號,確認(rèn)兩條信息之間是否有消息缺失。如果發(fā)現(xiàn)有消息缺失,則暫存這條消息等待缺失消息的到來,當(dāng)缺失的消息被接收處理后,再讀取該消息。如果等待超時,則發(fā)送一條訪問缺失消息的命令給發(fā)送端,讓發(fā)送端重新發(fā)送該消息,從而確保消息順序控制,控制流程如圖3所示。
當(dāng)前遠(yuǎn)程實驗系統(tǒng)僅采用簡易的匿名認(rèn)證和明文數(shù)據(jù)傳輸方法,沒有進(jìn)行有效的網(wǎng)絡(luò)安全防護(hù)。通過研究傳輸層和應(yīng)用層的網(wǎng)絡(luò)安全設(shè)計,來解決實驗通信的網(wǎng)絡(luò)安全問題。
3.3.1 傳輸層網(wǎng)絡(luò)安全設(shè)計
傳輸層采用SSL/TLS協(xié)議實現(xiàn)MQTT通信的安全認(rèn)證與數(shù)據(jù)加密,SSL/TLS協(xié)議采用證書進(jìn)行身份校驗并對數(shù)據(jù)加密,能確保所有信息的完整性和加密傳輸??紤]用戶數(shù)量眾多和效率問題,采用SSL單向認(rèn)證的方式?;赟SL/TLS協(xié)議的網(wǎng)絡(luò)安全設(shè)計包含證書與密鑰文件生成、證書與密鑰文件配置和通信驗證。證書文件由Openssl軟件生成,首先生成CA文件,再由該文件為服務(wù)器和客戶端簽發(fā)各自的私鑰文件和證書文件。將生成的文件拷貝到EMQ通信服務(wù)器和客戶端上,配置相應(yīng)的SSL安全選項,最后建立安全加密的通信連接。
圖3 消息順序控制
3.3.2 應(yīng)用層網(wǎng)絡(luò)安全設(shè)計
應(yīng)用層采用基于E2ID實名制技術(shù)來確保對用戶的實名認(rèn)證和安全控制,同時設(shè)計用戶訪問控制(ACL)機(jī)制來實現(xiàn)對儀器操作的授權(quán)管理。
E2ID是由單位代碼、居民身份證號碼等經(jīng)過特定算法生成的唯一標(biāo)識碼,用作用戶身份認(rèn)證以及網(wǎng)絡(luò)實名制的標(biāo)識,具有較強安全性,目前已有近千萬個在線用戶[16]。在用戶創(chuàng)建時通過調(diào)用E2ID認(rèn)證接口,提交用戶真實身份信息和E2ID進(jìn)行實名驗證,實現(xiàn)對用戶的有效控制。
EMQ采用基于話題(Topic)訂閱的訪問權(quán)限控制機(jī)制,并提供基于MongoDB方式的實現(xiàn)。將EMQ集群所有節(jié)點連接到同一個MongoDB數(shù)據(jù)庫(大規(guī)模布置時可考慮MongoDB集群),在MongoDB的mqtt數(shù)據(jù)庫中創(chuàng)建mqtt_user和mqtt_acl表,用于存儲用戶和訪問控制的信息。用戶在預(yù)約實驗時創(chuàng)建訪問控制信息,獲取儀器的操作權(quán)限,在實驗操作結(jié)束后失去該權(quán)限。在EMQ監(jiān)控與認(rèn)證應(yīng)用中設(shè)計訪問EMQ用戶信息和訪問控制管理服務(wù)API,用于動態(tài)管理用戶及其訪問控制權(quán)限。用戶實名認(rèn)證與訪問控制流程如圖4所示。
當(dāng)實驗操作過程中發(fā)生通信服務(wù)器宕機(jī),用戶與儀器異常掉線或儀器運作超出安全控制,將致使儀器失去控制,造成儀器損壞。因此系統(tǒng)必需具備及時下達(dá)安全控制指令,阻止安全事故發(fā)生,并能自動切換通信連接、嘗試通信自愈和故障報警功能。
3.4.1 儀器安全保護(hù)設(shè)計
針對實驗通信失效的安全問題,對實驗儀器進(jìn)行三層保護(hù)設(shè)計。
(1)建立遺囑消息保護(hù)機(jī)制。遠(yuǎn)程實驗是由用戶對儀器的“一對一”操作,用戶獲取到儀器訪問權(quán)限后,與EMQ集群通信系統(tǒng)建立連接時,設(shè)立遺囑消息(willM-essage),willMessage由topic、payload、QoS和 retain組成,分別表示遺囑消息主題、消息內(nèi)容、通信服務(wù)質(zhì)量和是否駐留服務(wù)器以備后來訂閱者可以接收該消息,topic由實驗儀器訂閱,payload為緊急停止實驗儀器命令,QoS等級為QoS1,retain為false表示不駐留。當(dāng)已經(jīng)建立連接的Web用戶端異常斷線時,通信服務(wù)器能夠主動檢測到并將該遺囑消息發(fā)送給實驗儀器控制器,及時停止實驗儀器。當(dāng)用戶再次建立連接時,實驗儀器可以重新被啟用。
(2)建立通信連接檢測機(jī)制。在儀器控制器上設(shè)計MQTT通信連接斷開檢測處理事件,該事件基于MQTT的心跳機(jī)制進(jìn)行實現(xiàn)。MQTT客戶端建立連接后會周期性(60 s)發(fā)送一個心跳包給服務(wù)器,服務(wù)器收到該心跳包后返回一個響應(yīng),客戶在規(guī)定時間內(nèi)收到響應(yīng)則認(rèn)為當(dāng)前通信連接正常。當(dāng)客戶端發(fā)送心跳包出現(xiàn)異?;蛟诔?.5倍心跳周期內(nèi)仍未收到響應(yīng),則認(rèn)為通信連接故障,此時觸發(fā)停止實驗儀器事件及時停止實驗儀器,然后嘗試重新建立通信連接。當(dāng)通信連接重建失敗時,在本地發(fā)出故障報警信息。
圖4 用戶認(rèn)證與訪問控制過程
(3)建立實驗安全閾值管理。遠(yuǎn)程實驗的儀器操作中存在較多的轉(zhuǎn)動、加熱和位移控制等。在通信失效儀器未能及時停止時,將直接或間接的影響儀器安全。在儀器控制器上設(shè)計實驗安全閾值管理事件,該事件包含3個參數(shù)(上限值、下限值和輸入值),輸入值為需要進(jìn)行安全閾值檢測的數(shù)據(jù),上限值和下限值是對該數(shù)據(jù)的閾值設(shè)定。當(dāng)輸入值低于安全閾值范圍的10%或高于安全閾值范圍的90%時,該事件給出警告提示,當(dāng)超出安全閾值范圍時,觸發(fā)停止實驗儀器并發(fā)出報警信息。實驗工作安全閾值管理的數(shù)據(jù),根據(jù)實驗運作和影響儀器安全的數(shù)據(jù)關(guān)鍵性進(jìn)行選取。
3.4.2 通信自愈機(jī)制設(shè)計
通信自愈機(jī)制由MQTT消息通信、負(fù)載均衡節(jié)點信息表、通信狀態(tài)存儲、故障處理模塊組成。運行流程如圖5所示。
在建立通信連接時,向EMQ監(jiān)控與認(rèn)證應(yīng)用請求當(dāng)前系統(tǒng)中可用的負(fù)載均衡節(jié)點信息并保存到本地,隨機(jī)選取一個節(jié)點建立通信。當(dāng)通信發(fā)生連接中斷時,先進(jìn)行重連,如果不成功則調(diào)用通信自愈機(jī)制,保存當(dāng)前通信狀態(tài),讀取其他節(jié)點進(jìn)行通信連接;如果連接成功,則重新讀回通信狀態(tài),否則再次讀取其他節(jié)點信息,進(jìn)行通信連接。當(dāng)所有節(jié)點都不可用時,在本地發(fā)通信故障報警信息。
圖5 通信自愈運行流程
按照設(shè)計方案在微軟Azure云計算平臺上搭建遠(yuǎn)程實驗通信系統(tǒng)。EMQ集群規(guī)模大小為5,每個通信節(jié)點服務(wù)器配置為8核28 GB的Ubuntu 16.04.3-LTS,同時配置2個負(fù)載均衡器,1個MongoDB數(shù)據(jù)庫和1個EMQ監(jiān)控與認(rèn)證應(yīng)用服務(wù)器,并完成相關(guān)軟件部署。系統(tǒng)部署完后啟動EMQ服務(wù)并開啟MQTT:SSL,MQTT:WSS端口監(jiān)聽。將實驗通信的Web用戶端功能集成到遠(yuǎn)程實驗平臺[8]。實驗儀器為已經(jīng)在遠(yuǎn)程實驗平臺開發(fā)使用的邁克爾遜干涉儀、等厚干涉儀和聲速測量儀等,儀器控制器采用基于ARM處理器的樹莓派,實驗儀器通過樹莓派連接到通信系統(tǒng)。
針對開放式遠(yuǎn)程實驗通信需求,主要對系統(tǒng)的并發(fā)、消息傳輸和安全可靠性能進(jìn)行測試。并發(fā)性能通過模擬大規(guī)模用戶在線訪問,對通信服務(wù)器性能和響應(yīng)時間進(jìn)行實時監(jiān)測的方法進(jìn)行測試。消息傳輸性能通過給系統(tǒng)施加不同通信壓力,然后測量不同消息負(fù)載和不同通信服務(wù)質(zhì)量下的消息傳輸時延的方法進(jìn)行測試。安全可靠性能通過進(jìn)行相關(guān)實驗操作,實時查看實驗操作效果并對通信數(shù)據(jù)進(jìn)行抓包分析的方法進(jìn)行測試。
測試機(jī)與實驗儀器位于實驗室環(huán)境,網(wǎng)絡(luò)帶寬為10 MB。測試機(jī)系統(tǒng)配置為4核8 GB的Windows 10,運行遠(yuǎn)程實驗平臺Web應(yīng)用軟件。測試中所需的用戶負(fù)載模擬與通信壓力生成由負(fù)載機(jī)組完成,機(jī)組規(guī)模為20,部署于微軟Azure云計算平臺,系統(tǒng)配置為4核14 GB的Ubuntu 16.04.3-LTS。
在用戶負(fù)載從1萬逐漸增加到100萬的情況下對系統(tǒng)進(jìn)行并發(fā)性能測試,每秒新增負(fù)載連接數(shù)為1 000,采用SSL單向認(rèn)證方式連接。測試步驟如下:(1)由負(fù)載機(jī)組以每秒1 000條的速率向系統(tǒng)發(fā)起通信連接;(2)通過系統(tǒng)性能監(jiān)測軟件對集群中單個服務(wù)器節(jié)點的CPU占用率、內(nèi)存使用情況進(jìn)行實時監(jiān)控;(3)采用軟件計時方式測量通信連接的響應(yīng)時間,并統(tǒng)計連接成功數(shù);(4)對負(fù)載不斷增長的1萬、25萬、50萬、75萬、100萬階段隨機(jī)抽取不少于200組數(shù)據(jù)進(jìn)行統(tǒng)計分析。測試結(jié)果如表1所示。
表1 并發(fā)性能測試
由表1可知,隨著用戶連接數(shù)增多,內(nèi)存占用率增大,而CPU占用率、平均響應(yīng)時間略有增加,但變化不太明顯。系統(tǒng)在與測試機(jī)開始建立連接的小段時間內(nèi),CPU占用率會迅速增長達(dá)到峰值,隨后不斷有所降低,并且CPU占用率與設(shè)定的每秒新增負(fù)載連接數(shù)大小相關(guān),每秒新增負(fù)載連接數(shù)越大,CPU占用率越大。此外,在設(shè)置不重連的情況下,多次測試的連接成功率都達(dá)到了100%,從測試的結(jié)果來看,系統(tǒng)各項資源使用基本正常,基于SSL單向認(rèn)證確保了系統(tǒng)安全,在用戶高并發(fā)訪問的環(huán)境下,系統(tǒng)仍具有較好的性能。
在10萬、50萬和100萬高負(fù)載背景用戶連接的情況下,分別對每個通信服務(wù)器節(jié)點設(shè)定1萬用戶以1條/s的速率發(fā)送消息給其他用戶,用于給系統(tǒng)施加每秒傳輸5萬消息的通信壓力。然后測量遠(yuǎn)程實驗平臺Web用戶端與儀器控制端之間兩種不同負(fù)載大小(256 Byte、1 KB)消息傳輸時延和系統(tǒng)資源消耗。測試步驟如下:(1)由負(fù)載測試機(jī)組依次生成10萬、50萬和100萬背景用戶連接與5萬的通信壓力;(2)在本地測試機(jī)依次進(jìn)行256 Byte、1 KB大小消息在QoS0、Qos1和QoS2下的消息傳輸;(3)采用系統(tǒng)性能監(jiān)測軟件對集群中單個服務(wù)器節(jié)點的CPU占用率、內(nèi)存使用情況進(jìn)行實時監(jiān)控;(4)采用軟件計時方式對18種不同情況下的消息傳輸時延進(jìn)行統(tǒng)計分析,每組測試數(shù)據(jù)不少于200條。測試結(jié)果如表2所示。
表2 消息傳輸性能測試
由表2可知,消息負(fù)載大小對消息傳輸時延略有增加,但變化不太明顯;背景用戶連接數(shù)的增加除了會消耗更多的內(nèi)存外,對系統(tǒng)性能影響較??;針對不同的通信服務(wù)質(zhì)量,消息傳輸時延有明顯的不同。此外,在當(dāng)前測試的通信壓力情況下,消息傳輸成功率都達(dá)到了100%,可以滿足遠(yuǎn)程實驗的通信需要。在未來隨著系統(tǒng)消息吞吐量的增大,當(dāng)CPU或內(nèi)存占用率接近滿載的時候,消息傳輸時延會迅速增長,此時可以通過采取集群擴(kuò)容的方法分擔(dān)系統(tǒng)壓力,提高系統(tǒng)性能。
采用黑盒測試方法對系統(tǒng)的通信安全控制、可靠消息傳輸和儀器安全保障等性能進(jìn)行測試。測試時,按照測試用例在遠(yuǎn)程實驗平臺進(jìn)行用戶注冊登錄、儀器訪問和抓包分析;模擬不同順序消息在不同通信服務(wù)質(zhì)量下的消息傳輸,然后實時查看消息執(zhí)行結(jié)果;另外,人工制造不同通信失效情況,觀察儀器保護(hù)情況。測試用例及結(jié)果如表3所示。
表3 安全可靠性能測試
采用E2ID實名認(rèn)證方法和儀器操作授權(quán)管理機(jī)制有效確保了系統(tǒng)的用戶和儀器的安全控制;消息順序控制機(jī)制在網(wǎng)絡(luò)不穩(wěn)定的情況下,提供除QoS0以外的消息順序控制,確保消息的有序傳輸;而儀器安全保障機(jī)制能在實驗操作過程中,及時檢測到網(wǎng)絡(luò)故障,下達(dá)停止實驗的控制指令,確保實驗儀器安全,同時具備嘗試通信自愈,恢復(fù)實驗通信的能力。
從實驗儀器與用戶并發(fā)訪問、實時可靠消息傳輸、網(wǎng)絡(luò)安全控制和儀器安全保障四方面研究了遠(yuǎn)程實驗通信的并發(fā)性、實時性、可靠性和安全性問題,設(shè)計并實現(xiàn)了適用于全方位對外開放的遠(yuǎn)程實驗通信方案。測試結(jié)果表明,該方案功能完善,并發(fā)能力強,實時好,可靠性高,安全性好,能有效滿足實驗應(yīng)用的消息傳輸需求。