覃潤楠, 彭曉東, 謝文明, 惠建江, 馮渭春, 姜加紅
(1. 中國科學(xué)院國家空間科學(xué)中心, 北京 100191; 2. 中國人民解放軍63921部隊(duì), 北京 100094)
航天器在軌運(yùn)行過程中所處的空間環(huán)境復(fù)雜多變,各種粒子輻射、電磁輻射、溫度交變等環(huán)境效應(yīng)[1]會對航天器產(chǎn)生干擾影響,嚴(yán)重的會導(dǎo)致航天器故障,造成巨大損失,需采取有效手段準(zhǔn)確、直觀地展示航天器在軌工況,及時發(fā)現(xiàn)隱患,進(jìn)行故障預(yù)警,并在故障發(fā)生時快速定位以及實(shí)施故障預(yù)案,從而保障航天器長期在軌穩(wěn)定運(yùn)行。因此,開展航天器運(yùn)行狀態(tài)綜合檢測和監(jiān)視顯示技術(shù)研究有著迫切的需求[2],且具有較高的實(shí)用價(jià)值。
聚焦航天器在軌運(yùn)行狀態(tài)監(jiān)視離不開對航天器遙測參數(shù)、數(shù)傳圖像的分析,航天器試驗(yàn)數(shù)據(jù)成為地面監(jiān)視人員了解航天器運(yùn)行狀態(tài)的主要依據(jù)[3]。隨著航天技術(shù)的飛速發(fā)展,航天器種類、試驗(yàn)頻率、測量站點(diǎn)日益增多,越來越多的新型載荷得以搭載應(yīng)用,導(dǎo)致航天器試驗(yàn)數(shù)據(jù)數(shù)量急劇增加[4]。在航天器在軌狀態(tài)監(jiān)視過程中,如何使用較少數(shù)量的服務(wù)器高效、可靠地接收、管理并實(shí)時統(tǒng)計(jì)分析海量試驗(yàn)數(shù)據(jù),從而準(zhǔn)確表征航天器的運(yùn)行情況,是地面監(jiān)視人員所關(guān)心的熱點(diǎn)問題。
分布式云計(jì)算的出現(xiàn)和發(fā)展,使得海量數(shù)據(jù)的耗時處理能夠依托于計(jì)算能力有限的服務(wù)器集群,通過軟硬件資源的共享,按需分配給計(jì)算機(jī)和其他設(shè)備[5]。Hadoop 正是近年來得到廣泛應(yīng)用的開源云計(jì)算平臺,由核心組件分布式文件系統(tǒng)(hadoop distributed file system, HDFS)與大數(shù)據(jù)計(jì)算引擎MapReduce,以及Pig、ZooKeeper、 HBase、Hive等多個子項(xiàng)目組成[6]。面對持續(xù)增長的海量航天器試驗(yàn)數(shù)據(jù),具備通用性、高可靠性、可伸縮等特性的Hadoop的引入無疑會為分析展示航天器在軌試驗(yàn)過程帶來便捷。
然而,Hadoop雖具有高容錯性、批處理、PB量級大數(shù)據(jù)傳輸?shù)葍?yōu)點(diǎn),但無法滿足小文件的高效存儲、實(shí)時的多線程并發(fā)數(shù)據(jù)讀寫等應(yīng)用需求,因此需考慮引入高并發(fā)的消息發(fā)布/訂閱系統(tǒng)。發(fā)布/訂閱系統(tǒng)的異步通訊范式能夠?qū)崿F(xiàn)大規(guī)模分布式通訊傳輸應(yīng)用[7]:數(shù)據(jù)發(fā)送方將消息內(nèi)容發(fā)送至根據(jù)主題名稱區(qū)分的邏輯信道中,而數(shù)據(jù)接收方則自由訂閱自己感興趣的主題,并同步接收所有被發(fā)送到這些主題信道下的消息[8],具有多線程并發(fā)、松耦合及高可拓展的特性。當(dāng)前,主流的發(fā)布/訂閱系統(tǒng)有基于主題的Kafka[9]、RabbitMQ[10]、RocketMQ[11]、ActiveMQ[12]等系統(tǒng),以及基于內(nèi)容[13]、基于渠道[14]、基于類型[15]的發(fā)布/訂閱模型系統(tǒng)。
關(guān)于云計(jì)算平臺與發(fā)布/訂閱系統(tǒng)的結(jié)合方面已有一部分研究工作[16-18],文獻(xiàn)[19]提出了一個整合Hadoop的發(fā)布/訂閱中間件,通過基于內(nèi)容的匹配算法來分析訂閱意圖,從而更精準(zhǔn)地發(fā)布內(nèi)容給訂閱者。然而在實(shí)際應(yīng)用中,考慮到Hadoop的大規(guī)模并行計(jì)算依賴于存儲在本地磁盤上的離線數(shù)據(jù),無法滿足航天器在軌試驗(yàn)數(shù)據(jù)的實(shí)時在線引接與處理分析顯示的應(yīng)用需求,需通過其他云節(jié)點(diǎn)額外進(jìn)行數(shù)據(jù)的實(shí)時交互處理。然而在云計(jì)算平臺中,各云節(jié)點(diǎn)的性能差異會導(dǎo)致數(shù)據(jù)不同步的現(xiàn)象。目前,已經(jīng)產(chǎn)生了許多經(jīng)典的節(jié)點(diǎn)選舉機(jī)制實(shí)現(xiàn)各節(jié)點(diǎn)的數(shù)據(jù)同步,例如Paxos消息一致性算法[20]、Raft優(yōu)先級選舉機(jī)制[21]、拜占庭故障容錯(practical Byzantine fault tolerance, PBFT)[22]等。但這些算法因各自特性差異皆有不同程度的使用限制,其中Paxos 和 Raft 共識算法并未考慮系統(tǒng)中的拜占庭節(jié)點(diǎn)問題,而PBFT 算法的可擴(kuò)展性較差等。
本文通過借鑒國內(nèi)外主流的發(fā)布/訂閱系統(tǒng),綜合考慮當(dāng)前選舉同步機(jī)制的局限性,設(shè)計(jì)了一種面向航天器多源異構(gòu)試驗(yàn)數(shù)據(jù)傳輸、管理、緩存的分布式大數(shù)據(jù)發(fā)布/訂閱系統(tǒng)(big-data publish/subscribe system, BPSS),實(shí)現(xiàn)了基于消息一致性的動態(tài)選舉算法從而保障大數(shù)據(jù)的傳輸效率與安全。同時,在大型航天器數(shù)管實(shí)驗(yàn)任務(wù)中對BPSS的性能進(jìn)行實(shí)驗(yàn),驗(yàn)證了其具備數(shù)據(jù)交互響應(yīng)迅速、海量多源異構(gòu)數(shù)據(jù)高吞吐穩(wěn)定性等特點(diǎn),能夠穩(wěn)定、實(shí)時表征航天器運(yùn)行狀態(tài),便于地面監(jiān)視人員進(jìn)行有效的故障處置,為航天任務(wù)保駕護(hù)航。
本文按如下結(jié)構(gòu)組織:第1節(jié)介紹當(dāng)前國內(nèi)外研究現(xiàn)狀,引出航天器在軌試驗(yàn)數(shù)據(jù)全生命周期管理過程中所面臨的問題;第2節(jié)提出BPSS架構(gòu),并介紹其架構(gòu)設(shè)計(jì);第3節(jié)提出并介紹基于消息一致性的動態(tài)選舉算法;第4節(jié)依托航天器數(shù)管實(shí)驗(yàn)任務(wù)進(jìn)行BPSS性能驗(yàn)證,根據(jù)實(shí)驗(yàn)數(shù)據(jù)分析實(shí)驗(yàn)結(jié)果;最后給出本文的結(jié)論。
BPSS系統(tǒng)為5層分布式架構(gòu),包含控制中心層、數(shù)據(jù)發(fā)布層、數(shù)據(jù)訂閱層、數(shù)據(jù)處理層、數(shù)據(jù)緩存層,總體架構(gòu)如圖1所示。其中,控制中心層對云平臺的全部云節(jié)點(diǎn)實(shí)現(xiàn)主從調(diào)控,采用基于消息一致性的動態(tài)選舉算法推選主控節(jié)點(diǎn),并通過動態(tài)彈性擴(kuò)容策略增加從節(jié)點(diǎn)資源來完成大規(guī)模發(fā)布/訂閱任務(wù)。對于任意主從節(jié)點(diǎn)均設(shè)有以下4層架構(gòu):數(shù)據(jù)發(fā)布層將數(shù)據(jù)推送至數(shù)據(jù)映射區(qū),通過水位線和檢查點(diǎn)記錄數(shù)據(jù)偏移量,保證數(shù)據(jù)發(fā)布順序性;數(shù)據(jù)訂閱層根據(jù)數(shù)據(jù)映射區(qū)的主題分區(qū)拉取數(shù)據(jù),通過訂閱偏移量保證數(shù)據(jù)拉取順序性,同時各節(jié)點(diǎn)的數(shù)據(jù)映射區(qū)通過消息一致性通訊算法實(shí)現(xiàn)與主控節(jié)點(diǎn)的數(shù)據(jù)同步;數(shù)據(jù)處理層對數(shù)據(jù)映射區(qū)進(jìn)行鏡像備份,形成帶索引的源數(shù)據(jù)存儲塊,保證數(shù)據(jù)計(jì)算分析效率;數(shù)據(jù)緩存層完成數(shù)據(jù)安全入庫存儲,實(shí)現(xiàn)內(nèi)存級高吞吐與強(qiáng)容錯性。
BPSS系統(tǒng)的控制中心層在云平臺上實(shí)現(xiàn)控制中臺架構(gòu),包含調(diào)度器節(jié)點(diǎn)、主控節(jié)點(diǎn)、多個從節(jié)點(diǎn),如圖2所示。
控制中臺通過基于消息一致性的動態(tài)選舉算法對全部云節(jié)點(diǎn)實(shí)現(xiàn)主從調(diào)控,在主控節(jié)點(diǎn)由于意外進(jìn)程中斷或意外死機(jī)停止工作后在選舉區(qū)中發(fā)起選舉。整個選舉過程主要由選舉器和管理器共同完成,其中選舉器負(fù)責(zé)接收選票和發(fā)送選票,管理器負(fù)責(zé)主從節(jié)點(diǎn)之間的選舉通信和從節(jié)點(diǎn)票數(shù)的傳遞。如某個從節(jié)點(diǎn)票箱中的票數(shù)達(dá)到半數(shù)以上,則由該從節(jié)點(diǎn)接替主控節(jié)點(diǎn)工作。
圖1 BPSS總體架構(gòu)設(shè)計(jì)圖Fig.1 Overall architecture design diagram of BPSS
對于故障節(jié)點(diǎn)采用動態(tài)彈性擴(kuò)容策略重新賦能,該節(jié)點(diǎn)要求的資源將借助心跳機(jī)制傳遞到全局資源控制模塊,同時監(jiān)視器通過訂閱心跳來監(jiān)控集群狀況,隨后觸發(fā)縱向擴(kuò)容,彈性伸縮模塊創(chuàng)建新的資源節(jié)點(diǎn),并保存至擴(kuò)容隊(duì)列。最后,容器編排工具接收到創(chuàng)建新節(jié)點(diǎn)的指令后,在擴(kuò)容隊(duì)列中讀取該節(jié)點(diǎn)信息并新建節(jié)點(diǎn),當(dāng)新節(jié)點(diǎn)創(chuàng)建完成后, 則將擴(kuò)容隊(duì)列中的相應(yīng)節(jié)點(diǎn)移除。
在BPSS系統(tǒng)的任意主從節(jié)點(diǎn)上均實(shí)現(xiàn)發(fā)布/訂閱架構(gòu),包含發(fā)布者節(jié)點(diǎn)、訂閱者節(jié)點(diǎn),以及數(shù)據(jù)映射區(qū),如圖3所示。
發(fā)布者節(jié)點(diǎn)的設(shè)計(jì)由主線程和發(fā)送線程兩個線程協(xié)調(diào)組成。在主線程中由用戶創(chuàng)建數(shù)據(jù),之后通過攔截器、序列化器和分區(qū)器將數(shù)據(jù)緩存到數(shù)據(jù)累加器的隊(duì)列尾部,以便發(fā)送線程可以批量發(fā)送,進(jìn)而減少網(wǎng)絡(luò)傳輸?shù)馁Y源消耗以提升性能。發(fā)送線程負(fù)責(zé)從數(shù)據(jù)累加器的雙端隊(duì)列頭部獲取消息,并通過響應(yīng)器將其發(fā)送到數(shù)據(jù)映射區(qū)。
訂閱者節(jié)點(diǎn)能夠加入訂閱組,負(fù)責(zé)根據(jù)水位線訂閱數(shù)據(jù)映射區(qū)中的數(shù)據(jù)主題,拉取數(shù)據(jù)后保存訂閱偏移量,如圖4所示。其中,水位線用于定義數(shù)據(jù)可見性,即用來標(biāo)識哪些數(shù)據(jù)能夠被訂閱者節(jié)點(diǎn)拉取。訂閱偏移量是訂閱者節(jié)點(diǎn)拉取下一條數(shù)據(jù)的位移值,因此介于水位線和訂閱偏移量之間的數(shù)據(jù)就屬于可以被拉取的數(shù)據(jù)內(nèi)容。
此外,為保證數(shù)據(jù)映射區(qū)的數(shù)據(jù)安全與處理實(shí)時性,BPSS在數(shù)據(jù)處理層實(shí)現(xiàn)基于檢查點(diǎn)的數(shù)據(jù)鏡像備份,整體設(shè)計(jì)思路如圖5所示。其中,檢查點(diǎn)的含義是當(dāng)某次鏡像備份完成后,緩存當(dāng)前的備份進(jìn)度。因此,當(dāng)批量數(shù)據(jù)寫入時,遇到檢查點(diǎn)后將重新建立新的鏡像文件,同時會在這個鏡像文件文件頭中添加索引,并合并為帶索引的源數(shù)據(jù)存儲塊,既可以保證緩存效率,同時也能在系統(tǒng)故障或服務(wù)器斷電時快速恢復(fù)數(shù)據(jù)。
圖2 控制中臺架構(gòu)設(shè)計(jì)圖Fig.2 Control center architecture design diagram
圖3 發(fā)布/訂閱架構(gòu)設(shè)計(jì)圖Fig.3 Publish/subscribe architecture design diagram
圖4 訂閱偏移量示意圖Fig.4 Schematic diagram of subscribe offset
圖5 數(shù)據(jù)鏡像備份模式設(shè)計(jì)圖Fig.5 Design diagram of data mirroring backup mode
BPSS的控制中臺為同步云節(jié)點(diǎn)之間的數(shù)據(jù)狀態(tài),引入心跳檢測機(jī)制周期性地檢測各節(jié)點(diǎn)的工作情況。當(dāng)前心跳檢測協(xié)議有很多種,例如加速心跳協(xié)議[23]、多機(jī)系統(tǒng)心跳檢測機(jī)制[24]、自適應(yīng)心跳檢測[25]等,但心跳檢測協(xié)議大多都存在節(jié)點(diǎn)異常后的不可恢復(fù)性,以及主控節(jié)點(diǎn)單點(diǎn)失效導(dǎo)致恢復(fù)延誤的問題[26]。常見的解決節(jié)點(diǎn)異常的方法是雙機(jī)容錯技術(shù)[27],在主控節(jié)點(diǎn)故障時用備份機(jī)對故障主控節(jié)點(diǎn)的工作進(jìn)行平滑接管,但降低了分布式系統(tǒng)的靈活性,于是針對雙機(jī)容錯技術(shù)的缺陷產(chǎn)生了選舉機(jī)制[28-30]。當(dāng)某個從節(jié)點(diǎn)檢測到主控節(jié)點(diǎn)故障時,該從節(jié)點(diǎn)需發(fā)起一個選舉過程,并要求其他從節(jié)點(diǎn)全部參加,共同選舉出一個新的從節(jié)點(diǎn)接替主控節(jié)點(diǎn)工作。
然而,在實(shí)際工程應(yīng)用中發(fā)現(xiàn)了選舉機(jī)制的諸多問題,例如云節(jié)點(diǎn)越多,選舉機(jī)制的執(zhí)行時間就越長,以及有新節(jié)點(diǎn)頻繁加入集群后可能重新引起一次選舉,導(dǎo)致主控節(jié)點(diǎn)不斷變換,系統(tǒng)可用性大幅降低。同時,由于各節(jié)點(diǎn)間的性能差異,數(shù)據(jù)同步程度不一致,選舉后會出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。為改進(jìn)上述問題,本文設(shè)計(jì)了一種基于消息一致性的動態(tài)選舉算法,能夠?qū)⒓舆x舉的節(jié)點(diǎn)數(shù)量進(jìn)行動態(tài)調(diào)控,通過動態(tài)彈性擴(kuò)容策略為故障節(jié)點(diǎn)再次賦能,同時基于消息一致性通訊策略同步各節(jié)點(diǎn)數(shù)據(jù)狀態(tài),其偽代碼如算法1所示。
算法 1 基于消息一致性的動態(tài)選舉算法Maser Mode (){ Qi(i=1,2,…,N) {initialize -> sort; while (true) ∥檢查選舉區(qū)與等待區(qū)節(jié)點(diǎn)數(shù)量; { if (選舉區(qū)數(shù)量超限) ∥閾值n Qn{->進(jìn)入等待區(qū); } else if (等待區(qū)數(shù)量超限) Qn{->進(jìn)入選舉區(qū); } }
Heartbeats Detect () ∥心跳檢測 { Timer->∥設(shè)置定時器 { ∥組播發(fā)送消息至各節(jié)點(diǎn) Multicast (Qi, message); if (Ack loss); ∥未收到從節(jié)點(diǎn)心跳回復(fù) { ∥節(jié)點(diǎn)故障,不再向該節(jié)點(diǎn)發(fā)送檢測包 AutoScale Mode();∥動態(tài)彈性擴(kuò)容策略 Qi(i=正常節(jié)點(diǎn)) ; } } } ∥end of heartbeats thread Message Response () ∥執(zhí)行選舉消息響應(yīng) { Qi{ if (發(fā)起選舉的節(jié)點(diǎn) 優(yōu)先級高于自己) { Multicast (讓位信息); ∥讀取讓位信息應(yīng)答 if (Ack->響應(yīng)超過半數(shù)) { Qi 被選舉為主控節(jié)點(diǎn); Consistent Mode ();∥消息一致性通訊策略 } } else { Multicast (結(jié)束選舉信息); } }} ∥end of master mode thread
由算法1可知,基于消息一致性的動態(tài)選舉算法首先將所有節(jié)點(diǎn)進(jìn)行優(yōu)先級排列,并根據(jù)當(dāng)前集群規(guī)模進(jìn)行閾值設(shè)置,閾值之上劃分為選舉區(qū),閾值之下劃分為等待區(qū)。只有位于選舉區(qū)的從節(jié)點(diǎn)才有資格參加主控節(jié)點(diǎn)的選舉,選舉結(jié)束后參加過選舉的從節(jié)點(diǎn)其優(yōu)先級會進(jìn)一步調(diào)高,盡可能保證主控節(jié)點(diǎn)性能為集群中的最優(yōu)節(jié)點(diǎn)。同時,閾值也會根據(jù)實(shí)際情況動態(tài)調(diào)整:當(dāng)選舉區(qū)的從節(jié)點(diǎn)數(shù)量過多時將選舉區(qū)內(nèi)優(yōu)先級最低的節(jié)點(diǎn)下放至等待區(qū),同樣當(dāng)?shù)却齾^(qū)從節(jié)點(diǎn)數(shù)量過多時,將等待區(qū)內(nèi)優(yōu)先級最高的從節(jié)點(diǎn)升級至選舉區(qū)。此外,對于故障節(jié)點(diǎn)通過動態(tài)擴(kuò)容將其替換為新創(chuàng)建的節(jié)點(diǎn),針對新加入集群的節(jié)點(diǎn)或故障恢復(fù)節(jié)點(diǎn)直接將其置為等待區(qū),降低節(jié)點(diǎn)加入集群時進(jìn)行選舉的次數(shù)。在主控節(jié)點(diǎn)由于意外進(jìn)程中斷或意外死機(jī)停止工作后在選舉區(qū)中發(fā)起選舉,如某個從節(jié)點(diǎn)中的票數(shù)達(dá)到半數(shù)以上,則由該從節(jié)點(diǎn)接替主控節(jié)點(diǎn)工作,并進(jìn)行各節(jié)點(diǎn)間消息一致性判讀。
基于消息一致性的動態(tài)選舉算法中的消息一致性策略偽代碼如算法2所示,每個節(jié)點(diǎn)中需記錄主控節(jié)點(diǎn)變更次數(shù)的紀(jì)元信息,紀(jì)元信息初始值為0,每當(dāng)主控節(jié)點(diǎn)變更一次,紀(jì)元信息值就會加1,即增設(shè)版本號,下標(biāo)m表示主控節(jié)點(diǎn)。同時,每個節(jié)點(diǎn)中需記錄消息偏移量,用于同步當(dāng)前紀(jì)元信息下寫入第一條消息時的偏移坐標(biāo)。從節(jié)點(diǎn)以固定頻率向主控節(jié)點(diǎn)請求數(shù)據(jù)同步,并當(dāng)節(jié)點(diǎn)狀態(tài)更替時比對各自節(jié)點(diǎn)消息偏移量的位置進(jìn)行數(shù)據(jù)截?cái)嗷蜓a(bǔ)齊操作,以此保護(hù)各節(jié)點(diǎn)的數(shù)據(jù)完整性。
算法 2 消息一致性通訊策略Consistent Mode (){ Qi(i=1,2,…,N)Qm; initialize, Timer->∥設(shè)置定時器 { ∥單播發(fā)送消息至主控節(jié)點(diǎn)請求同步 Multicast(Qi(i=1,2,…,N), message); if(Qi宕機(jī)重啟) { message->數(shù)據(jù)截?cái)嗷蜓a(bǔ)齊; } if(Qi選舉為Qm) { 紀(jì)元信息+=1; 消息偏移量+=number(message); } }}
基于消息一致性的動態(tài)選舉算法中的動態(tài)彈性擴(kuò)容策略偽代碼如算法3所示,設(shè)置擴(kuò)容隊(duì)列暫存當(dāng)前故障節(jié)點(diǎn),根據(jù)每一個故障節(jié)點(diǎn)的故障類型設(shè)定節(jié)點(diǎn)類型type,如果擴(kuò)容隊(duì)列中包含該節(jié)點(diǎn)類型,則繼續(xù)迭代查找下一個故障節(jié)點(diǎn),否則將該節(jié)點(diǎn)類型加入至擴(kuò)容隊(duì)列中。通過擴(kuò)容隊(duì)列的設(shè)置,降低新節(jié)點(diǎn)的創(chuàng)建時間,同時防止為同一個故障節(jié)點(diǎn)創(chuàng)建過多新節(jié)點(diǎn)。
算法 3 動態(tài)彈性擴(kuò)容策略AutoScale Mode (){ for each i∈N do type=Pending Qi->node_type if Expanding Q.contains (type) continue else create new node put
BPSS在大型航天器數(shù)管實(shí)驗(yàn)任務(wù)中進(jìn)行了實(shí)地測試,其硬件部署圖如圖6所示。采用云平臺虛擬節(jié)點(diǎn)集群、分布式云存儲設(shè)備,以及國產(chǎn)操作系統(tǒng)與數(shù)據(jù)庫搭建大容量數(shù)據(jù)交換環(huán)境。
圖6 硬件環(huán)境部署Fig.6 Hardware environment deployment
面向航天器在軌運(yùn)行監(jiān)視中測控遙測、數(shù)傳遙測、數(shù)傳圖像、遙控指令等多源數(shù)據(jù)傳輸、交互、顯示需求,設(shè)計(jì)了大數(shù)據(jù)訂閱吞吐性能、大數(shù)據(jù)傳輸性能兩類實(shí)驗(yàn),共同驗(yàn)證BPSS的實(shí)際性能。
3.2.1 大數(shù)據(jù)訂閱吞吐性能實(shí)驗(yàn)
首先采用不同量級的航天器在軌傳輸數(shù)據(jù)包進(jìn)行數(shù)據(jù)發(fā)布(單體為1 M),對比BPSS與當(dāng)前國內(nèi)外主流開源發(fā)布/訂閱系統(tǒng)(例如Kafka、ActiveMQ、RabbitMQ、RocketMQ)的消息訂閱響應(yīng)時延。數(shù)據(jù)內(nèi)容包括星地與星間通信的測控遙測、數(shù)傳遙測、數(shù)傳圖像、操控指令等,數(shù)據(jù)類型包括json、txt、jpeg、xml等。
消息訂閱響應(yīng)時延指數(shù)數(shù)據(jù)發(fā)布后直到訂閱獲得全部數(shù)據(jù)所消耗的時間,如下所示:
Tdelay=Tsubscribe-Tpublish
(1)
式中:Tdelay為消息訂閱響應(yīng)時延;Tsubscribe表示數(shù)據(jù)訂閱時間戳;Tpublish為數(shù)據(jù)發(fā)布時間戳。
實(shí)驗(yàn)結(jié)果如表1所示,可知在不同量級的數(shù)據(jù)傳輸過程中,數(shù)據(jù)訂閱響應(yīng)時延與訂閱數(shù)據(jù)量呈現(xiàn)正相關(guān)關(guān)系。BPSS消息訂閱平均響應(yīng)時延為0.05 s,其他發(fā)布/訂閱系統(tǒng)如Kafka、ActiveMQ、RabbitMQ、RocketMQ的消息訂閱平均響應(yīng)時延分別為28.64 s、0.07 s、0.14 s、0.11 s,相比而言BPSS具有更快的消息訂閱響應(yīng)速率。
表1 不同發(fā)布/訂閱系統(tǒng)響應(yīng)時延對比Table 1 Different publish/subscribe system response delay comparison
之后分別采用單體大小為1 M、10 M、100 M的航天器在軌傳輸數(shù)據(jù)包,測試數(shù)據(jù)單體大小以及數(shù)據(jù)類型是否會對發(fā)布/訂閱系統(tǒng)的訂閱速率產(chǎn)生影響,實(shí)驗(yàn)結(jié)果如圖7所示。分析可知,在發(fā)布/訂閱系統(tǒng)中,數(shù)據(jù)訂閱響應(yīng)時延與訂閱數(shù)據(jù)的單體大小呈正相關(guān)關(guān)系。同時,相較于其他數(shù)據(jù)類型,各發(fā)布/訂閱系統(tǒng)對于jpeg圖像類型數(shù)據(jù)的訂閱響應(yīng)時延都是最長的。但相比于其他的發(fā)布/訂閱系統(tǒng),BPSS對各類多源異構(gòu)數(shù)據(jù)的響應(yīng)速率差異化最小。
圖7 不同數(shù)據(jù)包下各發(fā)布/訂閱系統(tǒng)的響應(yīng)時延Fig.7 Response delay of each publish/subscribe system under different data packets
最后,對系統(tǒng)的數(shù)據(jù)吞吐能力進(jìn)行分析,定義系統(tǒng)數(shù)據(jù)吞吐能力計(jì)算如下所示:
(2)
式中:Numsubscribe表示在數(shù)據(jù)持續(xù)發(fā)布的條件下訂閱到的數(shù)據(jù)量統(tǒng)計(jì);t表示訂閱這些數(shù)據(jù)所花費(fèi)的時間,單位為s。
實(shí)驗(yàn)采用單體為1 M的航天器在軌傳輸數(shù)據(jù)包,按照1 000包/秒的固有數(shù)據(jù)發(fā)送頻率持續(xù)發(fā)布5 min,測試BPSS與Kafka、ActiveMQ、RabbitMQ等發(fā)布/訂閱系統(tǒng)的吞吐性能,相關(guān)實(shí)驗(yàn)結(jié)果如圖8所示??芍?吞吐能力越高Tps值越大,且曲線走勢越平穩(wěn),因此BPSS在各發(fā)布/訂閱系統(tǒng)中具備較好的吞吐性能。同時結(jié)合表1分析可知,消息訂閱響應(yīng)時延與發(fā)布/訂閱系統(tǒng)的大數(shù)據(jù)吞吐性能成反比,消息訂閱響應(yīng)時延越長其系統(tǒng)吞吐性能越差。
圖8 不同發(fā)布/訂閱系統(tǒng)吞吐性能比對Fig.8 Camparison of throughput performance between different publish/subscribe systems
3.2.2 大數(shù)據(jù)傳輸安全性能實(shí)驗(yàn)
首先,對比BPSS中基于消息一致性的動態(tài)選舉算法與當(dāng)前國內(nèi)外主流選舉算法(例如Paxos、Raft、PBFT等算法)的性能差異。在5個云節(jié)點(diǎn)分別采用不同算法進(jìn)行100次主控節(jié)點(diǎn)選舉并統(tǒng)計(jì)結(jié)果分布,實(shí)驗(yàn)結(jié)果如圖9所示。
圖9 不同主控節(jié)點(diǎn)選舉機(jī)制性能比對Fig.9 Performance comparison of election mechanism for different master nodes
分析可知Paxos、Raft、PBFT等算法選舉出來的主控節(jié)點(diǎn)在各個節(jié)點(diǎn)上都有所分布,即集群中的任意節(jié)點(diǎn)都有機(jī)會當(dāng)選為領(lǐng)導(dǎo)者節(jié)點(diǎn)。而BPSS中基于消息一致性的動態(tài)選舉算法使得優(yōu)先級最高的節(jié)點(diǎn)(云節(jié)點(diǎn)1)大概率保持為主控節(jié)點(diǎn),能夠有效減少選舉次數(shù)并提高選舉效率,同時避免集群節(jié)點(diǎn)數(shù)量變更引起網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)頻繁變化進(jìn)而導(dǎo)致系統(tǒng)可用性降低的問題。
之后采用單體為1 M的航天器在軌傳輸數(shù)據(jù)包,并對每包數(shù)據(jù)進(jìn)行自增編號后按照1包/秒的頻率進(jìn)行發(fā)布,分別統(tǒng)計(jì)持續(xù)訂閱1 h、6 h、12 h、24 h(平均每小時傳輸數(shù)據(jù)量為3.52 GB)不同時長下的訂閱數(shù)據(jù)編號缺失情況與數(shù)據(jù)內(nèi)容完整度,測試發(fā)布/訂閱系統(tǒng)數(shù)據(jù)傳輸性能。
實(shí)驗(yàn)指標(biāo)采取數(shù)據(jù)傳輸丟幀率Rf與數(shù)據(jù)破損率Rd,指標(biāo)定義如下所示:
(3)
(4)
式中:T表示向各云節(jié)點(diǎn)發(fā)布的數(shù)據(jù)量;L表示各云節(jié)點(diǎn)訂閱后丟失的數(shù)據(jù)量;D表示各云節(jié)點(diǎn)訂閱到的數(shù)據(jù)量。實(shí)驗(yàn)結(jié)果如表5所示。
表5 不同發(fā)布/訂閱系統(tǒng)傳輸數(shù)據(jù)完整性比對Table 5 Data transmission performance comparison of different publish/subscribe systems %
結(jié)果表明,單日吞吐量達(dá)到80 GB左右的量級時,BPSS數(shù)據(jù)傳輸丟幀率控制在0.025%,數(shù)據(jù)破損率控制在0.018%,且在單日各時刻內(nèi)BPSS對于數(shù)據(jù)傳輸?shù)膩G幀與破損情況基本保持穩(wěn)定,具備大數(shù)據(jù)穩(wěn)定性傳輸優(yōu)勢。
本文設(shè)計(jì)了一種面向航天器多源異構(gòu)試驗(yàn)數(shù)據(jù)傳輸、管理的BPSS,對云節(jié)點(diǎn)實(shí)現(xiàn)主從調(diào)控與彈性擴(kuò)容,并通過基于消息一致性的動態(tài)選舉算法完成大規(guī)模發(fā)布/訂閱任務(wù),實(shí)現(xiàn)高效、安全的航天器試驗(yàn)數(shù)據(jù)傳輸通信,為航天器試驗(yàn)任務(wù)全生命周期實(shí)時監(jiān)測、運(yùn)行工況健康檢測提供重要支撐。實(shí)驗(yàn)圍繞大型航天器數(shù)管實(shí)驗(yàn)任務(wù)中高吞吐量的數(shù)據(jù)收發(fā)處理任務(wù),結(jié)果表明BPSS有效優(yōu)化了數(shù)據(jù)發(fā)布/訂閱響應(yīng)速度,尤其提升海量數(shù)據(jù)傳輸安全性與存儲一致性,具備數(shù)據(jù)響應(yīng)迅速、高吞吐穩(wěn)定性高等優(yōu)勢。未來工作中,作者將進(jìn)一步優(yōu)化BPSS在云環(huán)境下更長周期的穩(wěn)定處理性能。