尹 超 孟獻軻 楊 巖
(中國電子科技集團公司第二十八研究所 南京 210007)
COE通用操作環境(Common Operating Environment)是美軍所有信息系統的公共支撐軟件平臺。1999年COE向三層結構轉變,用Java語言重寫主要軟件,增加了可移植性。2007年前后,美軍開發了Joint WebCOP(JWC)。JWC是GCCS系統家族的組成部分,使作戰人員通過標準瀏覽器(無需安裝任何插件)對戰場空間進行實時或近實時的可視化。它與 GCCS-A[1]、GCCS-M、GCCS-J、戰區戰斗管理核心系統(TBMCS)、國家地理空間情報局(NGA)、國防信息系統局(DISA)關聯,能夠提供基于Web的COP。
未來信息系統的發展趨勢是構建在信息柵格網上的服務化應用,其支撐技術是信息柵格服務、云計算等,傳統的客戶機-服務器(C/S)模式并非構建此類大型分布式信息系統的最佳模式。Java技術體系是開放的技術體系,是未來開發面向網絡服務信息系統的首選技術體系。Java EE平臺提供了一個多層結構的分布式的應用程序模型,可以更快地開發和發布新的應用解決方案。作為面向網絡服務的分布式系統,在大量用戶訪問情況下,過多的資源請求和有限的服務器資源(內存、CPU時間、網絡帶寬等)之間就會出現矛盾,應用系統的性能優化就顯得尤其重要。
本文研究了基于純瘦客戶端綜合態勢顯示、服務器主動推送更新實時態勢數據及Java平臺性能優化等關鍵技術,構建了基于Java平臺的B/S架構態勢原型系統,驗證了Java平臺對指控應用的支撐能力。
基于B/S架構態勢原型系統是一個局域網環境下的分布式仿真系統[2~3]。系統運行的硬件平臺是Intel Xeon 4核處理器,內存大小3GB,硬盤大小500GB,1000M以太網卡。軟件環境是 Windows XP操作系統,系統裝有Oracle數據庫。主要使用MyEclipse工具進行開發。
構建原型系統需要七臺服務器以及數臺客戶端,系統的體系結構如圖1所示。

圖1 基于B/S架構態勢原型系統體系結構圖
系統采用SOA架構,接入三類態勢數據源服務[4]:數據庫態勢信息、路情模擬器態勢信息和空情模擬器態勢信息。態勢數據源向態勢目錄服務注冊,態勢目錄服務將態勢源信息以XML格式發送給應用服務器。當客戶端向應用服務器請求頁面時,應用服務器會將態勢源服務地址發送給客戶端,通過向態勢數據源服務器請求數據(AJAX)或者服務器推送數據(WebSocket)兩種方式,客戶端接收數據源態勢信息,并圖1中顯示。圖1中WebGIS服務器提供地圖及其數據服務。
為了將不同的態勢服務組織在一起,并高效地提供給用戶使用。本文提出的基于B/S架構態勢原型系統主要對以下幾個方面的技術進行了研究。
為了使態勢目錄服務能夠發現并接受各類態勢數據源服務的注冊,本文提供了數據源服務集成標準。主要包括數據源服務注冊接口和數據交換格式標準。
(1)數據源服務注冊接口
通過數據源服務注冊接口,數據源服務將態勢圖層描述信息(XML格式)發送給態勢目錄服務。態勢目錄服務把圖層描述集中發布成態勢目錄,共應用服務器訪問。態勢圖層描述文件主要包含圖層標題、圖層唯一標識、圖層數據訪問地址、圖層字段描述信息等。
(2)數據交換格式標準
為了實現各類態勢數據源服務數據的統一管理以及和態勢客戶端之間交換數據,本文還提出了態勢數據交換格式的標準,采用JSON格式表示。JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,它是基于JavaScript的一個子集。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣。這些特性使JSON成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。JavaScript原生支持JSON,可以存儲JavaScript復合對象,有著XML不可比擬的優勢。考慮通用性和靈活性,標準主要包含基本要素和擴展要素。基本要素主要包括數據源名稱、元素名稱、元素唯一表示、經緯度等;擴展要素主要用于其他業務補充各自的業務數據。
態勢空情數據的接入需要在瀏覽器與服務器之間實現即時通訊,通常采用的技術都是輪詢。輪詢是在特定的時間間隔(如每1s),由瀏覽器對服務器發出HTTP request,然后由服務器返回最新的數據給客戶端。這種傳統的HTTP request模式帶來很明顯的缺點,瀏覽器需要不斷地向服務器發出請求,然而HTTP request的header是非常長的,里面包含的數據可能只是一個很小的值,這樣會占用很多的帶寬。比較新的去做輪詢的技術是Comet,雖然這種技術可達到全雙工通信,但依然需要發送請求。
面對這種狀況,HTML5定義了 WebSocket協議[6],能夠更好地節省服務器資源和帶寬并達到實時通訊的效果。在WebSocket API中,瀏覽器和服務器只需要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就可以直接進行全雙工數據傳送。WebSocket協議為我們實現即時服務帶來了兩大好處:一是互相溝通的Header是很小的,大概只有2Bytes;二是服務器可以主動傳送數據給客戶端。通過實驗對比,發現無論從系統資源占用情況還是從數據發送效率來看,數據主動推送都優于輪訓方式。在本系統實現中,服務器每一秒鐘向連接請求的客戶端發送一次實時數據。
Web圖形繪制通常采用SVG技術。SVG是基于XML的圖形矢量顯示技術,可以將其與CSS混搭使用,也可以使用SVG DOM動態向其添加行為。
在新的 HTML5標準中引入了 Canvas[7],Canvas可以用來進行繪制圖形、繪制游戲的圖案或者其他圖形圖案,允許使用腳本動態渲染點陣圖像。簡單來說,Canvas就是允許在HTML5中,使用JavaScript去繪制喜歡的任何圖形,包括文字、圖片、線、點、各種形狀等。此外,隨著硬件技術的提升,現代瀏覽器具有GPU加速功能,為HTML5的Canvas使用提供了更好的環境,當向Canvas發出繪畫命令時,瀏覽器直接將指令發送到圖形加速器而不需要開發者更多的干預,硬件圖形加速器則以難以置信的運算速度實時繪畫和渲染圖形。Canvas為大數據量的矢量數據在無插件的HTML文檔中,平滑、流暢的呈現,提供了新的解決方案。
相比于SVG,Canvas具有兩個明顯的優勢,一是在繪制復雜圖像時,Canvas的繪制速度比SVG快很多;二是SVG需要在瀏覽器中使用插件才能顯示,而Canvas僅需要JavaScript的支持。
本系統使用Canvas實現了對渲染要素的添加、刪除和選擇操作。
系統性能優化就是提高已有系統的性能,減少如CPU、內存、數據庫、網絡帶寬等資源的占用。一般是通過壓力測試或者在使用過程中發現性能方面的問題,然后尋找性能瓶頸,并結合項目進度、人員安排、技術儲備等因素,提出相應的優化策略。本文主要從性能的角度出發,結合我們的技術架構,討論Java EE應用程序代碼性能的優化和提升,提出了以下幾條應用優化準則[8~10],諸如硬件環境、數據庫環境等未在討論范圍之內。
1)盡量重用對象,避免創建過多短時對象;
2)在循環處多下功夫;
3)盡量減少I/O操作,并使用緩存;
4)Servlet中盡量不使用同步;
5)大型數據量分批獲取,緩存常用數據;
6)避免內存泄漏。
圖2和圖3是系統優化前后,客戶端數量與服務器性能關系圖。

圖2 優化前客戶端數量與服務器性能關系

圖3 優化后客戶端數量與服務器性能關系
本文圍繞系統體系架構及關鍵技術實現,提出了一種基于B/S架構的態勢原型系統,并對其性能優化進行了研究。系統提供了標準的數據源服務注冊接口和數據交換格式規范,并利用HTML5的WebSocket及Canvas新特性,提高了數據傳輸的效率和態勢元素上圖顯示的效率,降低了系統資源開銷,提升了軟件運行速度。驗證了Java平臺對指揮控制軟件的支撐能力。
[1]袁可亮,吳峻,何光濤.美軍二十一世紀部隊旅及旅以下作戰指揮系統[J].山西電子技術,2007(1):90-91.
[2]吳宇,康鳳舉,倪新堯.一種魚雷武器分布交互仿真系統的設計與實現[J].艦船電子工程,2003(5):65-68.