• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Redis與WebSocket的戰(zhàn)場態(tài)勢實時推送方案設(shè)計及實現(xiàn)

    2018-09-26 11:30:48潘峰王笑天宋鈺濤丁冬
    軟件導(dǎo)刊 2018年7期

    潘峰 王笑天 宋鈺濤 丁冬

    摘要:戰(zhàn)場態(tài)勢信息系統(tǒng)在信息化戰(zhàn)爭中具有十分重要的作用。為確保態(tài)勢信息的準(zhǔn)確性和時效性,設(shè)計一套可靠高效的信息實時推送方案以提供支撐?;赗edis與WebSocket的實時推送方案,不僅操作簡單,而且能夠兼容Windows和Linux兩大軟件平臺,支持從C/C++或Java程序中引接數(shù)據(jù),同時向C/C++或js前端進行推送,滿足絕大多數(shù)系統(tǒng)開發(fā)及維護需要。此外,通過采用訂閱與分發(fā)機制,保證方案高效運行。在指定硬件條件下,分別使用不同長度的模擬消息和不同數(shù)量的終端進行性能測試,能夠滿足戰(zhàn)場態(tài)勢信息系統(tǒng)的需要。

    關(guān)鍵詞:戰(zhàn)場態(tài)勢信息系統(tǒng);實時推送;Redis;WebSocket

    DOI:10.11907/rjdk.181593

    中圖分類號:TP319

    文獻標(biāo)識碼:A文章編號:1672-7800(2018)007-0143-04

    Abstract:Battlefieldsituationinformationsystemplaysaveryimportantroleininformationwarfare.WiththerapiddevelopmentofInternettechnology,theresearchofbattlefieldsituationinformationsystembasedonB/Sarchitecturehasmadegreatprogress.Inordertoensuretheaccuracyandtimelinessofsituationinformation,wemustdesignareliableandefficientinformationpushschemetoprovidesupport.ThispaperintroducesaninformationpushschemebasedonRedisandWebSocket,whichisnotonlysimple,butalsocompatiblewithtwomajorplatformsofwindowsandLinux.Atthesametime,itsupportsthetwomainstreamdevelopmentlanguagesofC/C++andJavatomeettheneedsofthedevelopmentandmaintenanceofthevastmajorityofthesystems.Inaddition,thesubscriptionanddistributionmechanismisadoptedtoensuretheefficientoperationofthescheme.Underthespecifiedhardwareconditions,thesimulationmessageswithdifferentaveragelengtharetestedrespectivelytoverifythefeasibilityofthescheme.

    KeyWords:battlefieldsituationinformationsystem;informationpush;Redis;WebSocket

    0引言

    戰(zhàn)場態(tài)勢信息系統(tǒng)是以戰(zhàn)場地理環(huán)境數(shù)據(jù)與作戰(zhàn)態(tài)勢數(shù)據(jù)為管理和處理對象,并對戰(zhàn)場態(tài)勢信息數(shù)據(jù)進行接收、管理、存儲、查詢、統(tǒng)計、分析和共享的綜合性系統(tǒng)[1]。它是具有交互式作戰(zhàn)空間態(tài)勢感知及共享能力的最有效工具和手段,其根本目的是獲得相對信息優(yōu)勢,打贏信息化戰(zhàn)爭[2,3]。近些年,隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,基于B/S架構(gòu)的戰(zhàn)場態(tài)勢信息系統(tǒng)研究取得了長足進步。尤其是得益于B/S架構(gòu)在安裝部署和升級維護等方面的優(yōu)勢,其已基本具備“指揮所開設(shè)到哪里、戰(zhàn)場態(tài)勢服務(wù)就支撐到哪里”的能力[4]。

    眾所周知,戰(zhàn)場態(tài)勢瞬息萬變,作戰(zhàn)時機稍縱即逝,因此為了確保態(tài)勢信息的準(zhǔn)確性和時效性,設(shè)計一套可靠高效的信息實時推送方案提供支撐。同時考慮到系統(tǒng)的開放性和兼容性,盡可能支持不同軟件平臺、開發(fā)語言。雖然在民用領(lǐng)域,一些國內(nèi)外知名廠商如Google、阿里、騰訊都給出了信息實時推送的解決方案[5,6],但是一方面考慮到軍用系統(tǒng)的安全性和保密性要求,所有軟件必須自主可控,另一方面這些體系化的解決方案大多太過重量級,對硬件環(huán)境與軟件部署有較多要求和限制,暫時不能滿足戰(zhàn)場態(tài)勢信息系統(tǒng)機動靈活部署的需求。本文介紹一種基于Redis和WebSocket的實時推送方案,不僅操作簡單,而且能夠兼容Windows和Linux兩大軟件平臺,支持C/C++和Java兩種開發(fā)語言,滿足絕大多數(shù)系統(tǒng)開發(fā)與維護需要。此外,通過采用訂閱與分發(fā)機制,保證方案高效運行。在指定硬件條件下,分別使用不同長度的模擬消息和不同數(shù)量的終端進行測試,驗證該方案性能。

    1Redis

    Redis(RemoteDictionaryServer)是一個完全開源免費、遵守BSD協(xié)議、基于Key-Value鍵值對的持久化數(shù)據(jù)庫存儲系統(tǒng),于2009年首次發(fā)布[7]。Redis采用C語言編寫,提供多種語言訪問接口,包括C/C++、Java、PHP、JavaScript、Python等。Redis采用Key-Value模型,使用Hash表實現(xiàn)Key與Value間的映射關(guān)系,因此可以通過Key值高效地對數(shù)據(jù)進行檢索。同時Redis本身支持master-slave(主從)同步,可有效提高系統(tǒng)的可靠性,并且可以通過讀寫分記提高性能。與其它常見的Key-Value緩存系統(tǒng)相比,Redis主要有性能極高、數(shù)據(jù)類型豐富、操作原子性、可持久化4個特點[8,9]。

    (1)性能極高。根據(jù)官方給出的bench-mark性能測試數(shù)據(jù),Redis讀的速度可以達到110000次/s,而寫的速度則可以達到81000次/s。在相同硬件環(huán)境下,Redis與業(yè)界最常用的Memcached系統(tǒng)性能非常接近,能夠完全滿足各式應(yīng)用需要。

    (2)數(shù)據(jù)類型豐富。Redis支持5種數(shù)據(jù)類型:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sortedset,有序集合)。string是Redis最基本的類型,支持最大存儲512MB內(nèi)容,并且為安全的二進制,可以包含任何數(shù)據(jù),比如jpg圖片或序列化對象。hash是一個string類型field和value映射表,特別適合用于存儲對象。list是簡單的字符串列表,能夠按照插入順序進行排序。set是string類型的無序集合。zset在set類型基礎(chǔ)上為每個插入記錄增加一個浮點類型的score屬性,該屬性在插入記錄時指定,每次插入記錄后,集合中的數(shù)據(jù)按照各記錄的score屬性重新排序。

    (3)操作原子性。Redis所有操作都是原子性的,即每一次操作要么成功執(zhí)行,要么失敗完全不執(zhí)行。同時,Redis也提供簡單的事務(wù)控制機制,通過MUTIL/EXEC命令將多個Redis操作打包起來作為一個命令執(zhí)行。Redis能夠保證來自不同客戶端的命令串行執(zhí)行,即在一個命令執(zhí)行結(jié)束前不會執(zhí)行其它客戶端的命令,從而保證打包在一起執(zhí)行的命令不會被其它客戶端命令干擾,進而提供了數(shù)據(jù)操作的隔離性。

    (4)數(shù)據(jù)持久化。Redis支持?jǐn)?shù)據(jù)的持久化,能夠?qū)?nèi)存中的數(shù)據(jù)保存在磁盤中,重啟時再次加載使用。

    2WebSocket技術(shù)

    WebSocket協(xié)議[10]是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。它實現(xiàn)了瀏覽器端與服務(wù)器端之間的全雙工(full-duplex)通信,因而也支持服務(wù)器端主動發(fā)送信息給瀏覽器端。在WebSocket中,需要先通過瀏覽器發(fā)出WebSocket連接請求,服務(wù)器端收到后立刻作出回應(yīng),這個過程通常被稱為“握手”。而后,瀏覽器端與服務(wù)器端之間形成一條雙向快速通道,兩者之間通過該條通道可直接傳送數(shù)據(jù),如圖1所示。

    與傳統(tǒng)的輪詢方式相比,WebSocket主要有以下幾點優(yōu)勢:①響應(yīng)及時。對于傳統(tǒng)的輪詢方式,由于客戶端不知道服務(wù)端的數(shù)據(jù)何時更新,因此不能確保服務(wù)端消息在第一時間傳送給客戶端。WebSocket因為在服務(wù)端與客戶端之間創(chuàng)建了一條可以多次使用的通道,所以一旦通道建成,就可以在一段時間內(nèi)保證服務(wù)端與客戶端之間的數(shù)據(jù)實時同步,滿足應(yīng)用需求;②網(wǎng)絡(luò)帶寬占用少。在傳統(tǒng)的輪詢方式中,無論服務(wù)端數(shù)據(jù)是否發(fā)生變化,每一個客戶端都會定時發(fā)起請求,服務(wù)端接收后視情況予以應(yīng)答,因此網(wǎng)絡(luò)上會存在很多無效或無意義的輪詢請求和應(yīng)答,而WebSocket只在服務(wù)端數(shù)據(jù)變化時才發(fā)出通知消息,對網(wǎng)絡(luò)帶寬的占用會大大降低;③服務(wù)器負(fù)載小。在傳統(tǒng)的輪詢方式中,服務(wù)端需要定時響應(yīng)每一個客戶端的請求,給出適當(dāng)應(yīng)答,而WebSocket服務(wù)端只需要保持與每一個客戶端連接即可,能夠節(jié)約很多處理開銷[11,12]。

    3方案設(shè)計

    3.1實時推送方案

    在戰(zhàn)場態(tài)勢信息系統(tǒng)中,需要從眾多形態(tài)不一的業(yè)務(wù)系統(tǒng)引接各類原始信息,通過消息總線服務(wù)和實時推送服務(wù)送至戰(zhàn)場態(tài)勢融合服務(wù),經(jīng)加工處理后生成統(tǒng)一的綜合態(tài)勢信息,再通過消息總線服務(wù)和實時推送服務(wù)送至各終端更新顯示,如圖2所示。

    為了確保戰(zhàn)場態(tài)勢信息的準(zhǔn)確性和時效性,使用Redis作消息隊列,經(jīng)封裝后對外提供消息總線服務(wù)。首先,Redis操作原子性的特點可以保證原始信息和綜合態(tài)勢信息無損傳遞;其次,Redis的高速讀寫可以為系統(tǒng)提供高吞吐量的處理能力,有效避免信息阻塞甚至是積壓情況出現(xiàn);第三,Redis支持豐富的數(shù)據(jù)類型,可以滿足不同信息源對數(shù)據(jù)格式的要求;第四,支持?jǐn)?shù)據(jù)持久化的特性可以讓用戶按需保存原始信息和綜合態(tài)勢信息,為總結(jié)講評、推演復(fù)盤、數(shù)據(jù)挖掘等活動提供支撐[13]。

    至于實時推送服務(wù),則考慮基于WebSocket予以實現(xiàn)。一方面,WebSocket能夠及時感知服務(wù)端的數(shù)據(jù)變化,并在第一時間通知客戶端進行更新,滿足指揮員實時掌握戰(zhàn)場態(tài)勢的需求;另一方面,與傳統(tǒng)的輪詢方式相比,WebSocket在帶寬占用和服務(wù)端負(fù)載方面有明顯優(yōu)勢,能夠有效降低對系統(tǒng)硬件環(huán)境的要求,便于在條件受限的機動式指揮所中安裝部署[14]。同時,隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,WebSocket的兼容性也在不斷提高,其實現(xiàn)復(fù)雜度大大降低[15]。

    3.2并發(fā)吞吐量

    為了更好地滿足廣大指戰(zhàn)人員全盤掌握戰(zhàn)場情況、輔助制定作戰(zhàn)決策的需求,戰(zhàn)場綜合態(tài)勢信息系統(tǒng)需要從越來越多的業(yè)務(wù)系統(tǒng)引接原始信息,從而生成更加準(zhǔn)確和精細化的綜合態(tài)勢,而這必然會導(dǎo)致信息更新頻率越來越高。同時,隨著各種臺式、便攜式、手持終端普及,戰(zhàn)場態(tài)勢信息系統(tǒng)的服務(wù)對象也日益增多[16]。以上都對實時推送方案的并發(fā)吞吐量提出了較高要求。

    考慮到不同終端對態(tài)勢信息的需求可能不同,采用訂閱和分發(fā)機制取代最原始的廣播方式實現(xiàn)信息推送[17]。將態(tài)勢信息進行分類,各終端首先向?qū)崟r推送服務(wù)注冊自己感興趣的分類,實時推送服務(wù)感知到某類態(tài)勢信息更新后,只對相應(yīng)感興趣的終端進行推送,從而避免網(wǎng)絡(luò)中出現(xiàn)無效報文,影響整體傳輸效率。同時,各終端也只會接收到對自己有用的信息,可以減少處理開銷。

    當(dāng)戰(zhàn)場綜合態(tài)勢信息系統(tǒng)的信息源和服務(wù)用戶數(shù)量上升到一定規(guī)模時,還可以通過使用Redis官方提供的集群方案以及反向代理服務(wù)軟件實現(xiàn)橫向擴展,利用多實例協(xié)同運行以及負(fù)載均衡等策略,提高系統(tǒng)服務(wù)能力[18]。同時,方案也能進一步提高系統(tǒng)的抗毀能力,避免因個別節(jié)點故障影響正常使用。

    3.3軟件平臺兼容性

    為便于開展戰(zhàn)場態(tài)勢信息系統(tǒng)的部署應(yīng)用,必須考慮實時推送方案對軟件平臺的兼容性。雖然Redis本身只支持Linux系統(tǒng),并不支持直接在Windows系統(tǒng)中使用,但是MicrosoftOpenTechgroup已經(jīng)在此基礎(chǔ)上開發(fā)并對外提供了一個可以在Windows系統(tǒng)中穩(wěn)定運行的版本,從而解決了Redis服務(wù)端的軟件平臺兼容性問題[19]。同時,通過使用hiredis和libWebSocket組件,可以輕松實現(xiàn)從Redis中逐一獲取信息,并通過網(wǎng)絡(luò)推送給指定用戶。上述組件都是用純C語言編寫的,代碼完全公開,并且可以完美兼容Linux和Windows兩大軟件平臺[20]。

    3.4開發(fā)語言支持情況

    如前文所述,戰(zhàn)場態(tài)勢信息系統(tǒng)一方面要從各業(yè)務(wù)系統(tǒng)引接原始信息,另一方面還要接收不同終端的訂閱,對綜合態(tài)勢信息進行按需分發(fā)。而各業(yè)務(wù)系統(tǒng)信息源管理系統(tǒng)通常不是用C/C++語言就是用Java語言開發(fā)的,為了避免其在接入戰(zhàn)場態(tài)勢信息系統(tǒng)過程中進行大量適應(yīng)性改造,消息總線服務(wù)應(yīng)對外提供支持上述兩種開發(fā)語言的接口。經(jīng)過試驗,使用hiredis和Jedis就可以通過簡單的函數(shù)調(diào)用實現(xiàn)與Redis隊列的交互[21]。此外,為了同時適應(yīng)客戶端和Web端兩種終端顯示模式,實時推送服務(wù)應(yīng)同時具備向C/C++和js前端推送數(shù)據(jù)的能力。由于WebSocket是HTML5中定義的一種新協(xié)議,在JavaEE7中也實現(xiàn)了該協(xié)議,因此通過使用libWebSocket就可以讓系統(tǒng)滿足不同終端的要求。

    4性能測試

    為了驗證方案性能,使用普通臺式機部署戰(zhàn)場態(tài)勢信息系統(tǒng),再使用幾臺相同機器模擬業(yè)務(wù)系統(tǒng)的信息源和終端用戶進行簡單測試。各臺式機配置如下:CPU為Inteli5-3570,主頻3.4GHz,內(nèi)存4GB,百兆網(wǎng)卡,操作系統(tǒng)采用Windows7旗艦版(SP1)。

    考慮到真實環(huán)境中態(tài)勢信息存在不同長度的情況,分別采用平均長度為10、100、1000字節(jié)的模擬消息以及1、5、10個模擬終端對該方案進行測試,結(jié)果如圖3所示。

    根據(jù)測試結(jié)果,設(shè)計的實時推送方案隨著消息長度和服務(wù)用戶增加,其吞吐量會出現(xiàn)比較明顯的下降。但即便是使用平均長度為1000字節(jié)的模擬消息同時為10個終端提供服務(wù),仍然可以達到每秒276條的推送速度,完全可以滿足戰(zhàn)場態(tài)勢信息系統(tǒng)的需要。

    5結(jié)語

    如前文所述,戰(zhàn)場態(tài)勢信息系統(tǒng)由于對準(zhǔn)確性和時效性都有較高要求,因此需要設(shè)計一套可靠高效的信息實時推送方案以提供支撐??紤]到軍用領(lǐng)域暫無滿足此需求可靈活部署的解決方案,本文介紹一種基于Redis和WebSocket的實時推送方案,不僅操作簡單,而且能夠兼容Windows和Linux兩大軟件平臺,同時支持C/C++和Java兩種開發(fā)語言,以滿足絕大多數(shù)系統(tǒng)開發(fā)和維護需要。此外,通過采用訂閱與分發(fā)機制,保證方案高效運行。在指定的硬件條件下,分別使用不同長度的模擬消息和不同數(shù)量的終端進行測試,驗證了該方案性能可滿足戰(zhàn)場態(tài)勢信息系統(tǒng)的需要。

    目前我國軍用網(wǎng)絡(luò)出于安全考慮,全部采用物理隔離方式獨立運行,并且針對類似戰(zhàn)場態(tài)勢共享的特定應(yīng)用,往往單獨分配足夠信道資源以保證業(yè)務(wù)不受影響。因此,實時推送方案的設(shè)計尚未涉及如何根據(jù)各用戶之間的傳輸質(zhì)量進一步優(yōu)化傳輸策略。未來很可能要將綜合態(tài)勢信息系統(tǒng)應(yīng)用在帶寬受限的有線傳輸和無質(zhì)量保證的無線傳輸環(huán)境下,屆時各用戶的信道傳輸條件差異性較大,并會隨著時間推移呈現(xiàn)無規(guī)律變化,所以如何充分利用有限的傳輸資源,盡可能及時準(zhǔn)確地將用戶感興趣的信息推送至終端是值得進一步研究的課題[22,23]。

    參考文獻:

    [1]謝衛(wèi).基于GIS和RS的戰(zhàn)場態(tài)勢信息系統(tǒng)研究[D].成都:西南交通大學(xué),2010.

    [2]陳引川.戰(zhàn)場態(tài)勢信息系統(tǒng)的研究與實現(xiàn)[D].鄭州:中國人民解放軍信息工程大學(xué),2006.

    [3]石子言,趙國林,胡喬林.基于模糊綜合評判法的網(wǎng)絡(luò)攻擊效果評估方法研究[J].軟件導(dǎo)刊,2017,16(2):156-159.

    [4]張云峰,廖斌.基于B/S架構(gòu)的校園辦公自動化系統(tǒng)設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2016,15(8):104-106.

    [5]李娜,杜彥輝,陳默.基于短地址混淆和谷歌云推送的移動僵尸網(wǎng)絡(luò)的構(gòu)建[J].計算機應(yīng)用,2015,35(6):1698-1704.

    [6]胡崢輝.基于阿里云的微電網(wǎng)能量監(jiān)控調(diào)度系統(tǒng)[D].廣州:華南理工大學(xué),2016.

    [7]曾超宇,李金香.Redis在高速緩存系統(tǒng)中的應(yīng)用[J].微型機與應(yīng)用,2013(12):11-13.

    [8]楊旸.基于Redis的Thrift緩存機制設(shè)計[J].軟件導(dǎo)刊,2016,15(3):29-32.

    [9]邱祝文.基于redis的分布式緩存系統(tǒng)架構(gòu)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014(10):52-54.

    [10]薛隴彬,劉釗遠.基于WebSocket的網(wǎng)絡(luò)實時通信[J].計算機與數(shù)字工程,2014(3):478-481.

    [11]盛平,丁波.基于WebSocket協(xié)議的智能溫室測控系統(tǒng)設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2016,15(8):65-68.

    [12]張文,牟艷,高振興,等.WebSocket技術(shù)在工業(yè)設(shè)備數(shù)據(jù)實時監(jiān)測中的應(yīng)用[J].計算機與現(xiàn)代化,2017(11):111-115.

    [13]陳曉峰,劉興,高元博,等.基于數(shù)據(jù)挖掘的海戰(zhàn)場態(tài)勢可視化平臺構(gòu)建[J].火力與指揮控制,2015(4):144-147.

    [14]張維,賈愛梅.戰(zhàn)術(shù)互聯(lián)網(wǎng)在機動式指揮所中的組織應(yīng)用研究[J].艦船電子工程,2013,33(10):11-12.

    [15]胡朝舉,高聰.WebSocket新特性及其安全研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(11):55-56.

    [16]王萬停,華紅勝.便攜式指揮通信終端及控制方法設(shè)計[J].無線互聯(lián)科技,2017(18):1-2.

    [17]錢哨,陳丹.基于數(shù)據(jù)分發(fā)服務(wù)的發(fā)布訂閱系統(tǒng)[J].電子技術(shù)與軟件工程,2017(6):153.

    [18]高昕,黃真.Redis集群在有軌電車車載系統(tǒng)中的應(yīng)用[J].現(xiàn)代城市軌道交通,2018(2):18-20+24.

    [19]張威.基于redis的分布式緩存系統(tǒng)架構(gòu)分析[J].計算機產(chǎn)品與流通,2017(8):252.

    [20]丁振凡.基于WebSocket的在線圍棋對弈軟件設(shè)計[J].吉首大學(xué)學(xué)報:自然科學(xué)版,2017,38(4):27-33.

    [21]徐竟州.基于Redis的高并發(fā)搶紅包應(yīng)用的設(shè)計與實現(xiàn)[D].長沙:湖南大學(xué),2016.

    [22]周瑩.受限帶寬環(huán)境下實時數(shù)據(jù)分發(fā)服務(wù)傳輸優(yōu)化技術(shù)研究[D].武漢:中國艦船研究院,2016.

    [23]魏暢.無線信道的確定性建模與分析[D].南京:南京郵電大學(xué),2013.

    (責(zé)任編輯:何麗)

    左贡县| 许昌县| 同心县| 仁化县| 莎车县| 凌海市| 文成县| 通州区| 搜索| 加查县| 克什克腾旗| 同心县| 万宁市| 江西省| 建瓯市| 苗栗县| 昆明市| 泰和县| 铁岭县| 忻州市| 富宁县| 平顺县| 和平区| 安徽省| 六枝特区| 东丰县| 汉川市| 赤城县| 阿克| 罗山县| 开远市| 镇宁| 家居| 体育| 建宁县| 泗阳县| 牡丹江市| 和顺县| 定南县| 青岛市| 长沙市|