本發(fā)明屬于計(jì)算機(jī)
技術(shù)領(lǐng)域:
,具體涉及一種分布式服務(wù)系統(tǒng)。
背景技術(shù):
:隨著計(jì)算機(jī)技術(shù)的發(fā)展,采用多臺(tái)計(jì)算機(jī)組成一個(gè)分布式服務(wù)系統(tǒng)可以為用戶提供比傳統(tǒng)的集中式系統(tǒng)更好的服務(wù),特別是可以克服主機(jī)資源緊張和響應(yīng)瓶頸的缺陷,更好地實(shí)現(xiàn)任務(wù)的分配與優(yōu)化。目前,可實(shí)現(xiàn)調(diào)用、監(jiān)聽服務(wù)、提供遠(yuǎn)程通信與信息交換的分布式系統(tǒng)很多,如阿里巴巴旗下開源的分布式服務(wù)框架dubbo、開源軟件ApacheHadoop的分布式服務(wù)框架Zookeeper等。但上述框架均是Java版本的,無法支持大量現(xiàn)有的C++應(yīng)用。技術(shù)實(shí)現(xiàn)要素:發(fā)明目的:針對(duì)現(xiàn)有技術(shù)中存在的問題,本發(fā)明公開了一種基于C++與Java混合編程的分布式服務(wù)系統(tǒng),該分布式服務(wù)系統(tǒng)支持C++應(yīng)用和JAVA應(yīng)用,并且增強(qiáng)了軟件的運(yùn)行速度與穩(wěn)定性。。技術(shù)方案:一種基于C++與Java混合編程的分布式服務(wù)系統(tǒng),包括服務(wù)端,中間件,服務(wù)總線和客戶端;其中服務(wù)端是服務(wù)的提供者,包括C++應(yīng)用和JAVA應(yīng)用;服務(wù)總線用來實(shí)現(xiàn)監(jiān)聽服務(wù)端提供的服務(wù)并形成服務(wù)清單;客戶端調(diào)用服務(wù)端提供的服務(wù),包括C++應(yīng)用和JAVA應(yīng)用;中間件包括服務(wù)端與服務(wù)總線之間和客戶端與服務(wù)總線之間兩部分,其中服務(wù)端與服務(wù)總線之間的中間件用來向服務(wù)總線注冊服務(wù)端C++應(yīng)用提供的服務(wù),客戶端與服務(wù)總線之間的中間件提供調(diào)用服務(wù)的Rest接口,輔助客戶端實(shí)現(xiàn)服務(wù)調(diào)用。服務(wù)端通過HttpServlet將自身信息封裝成服務(wù);服務(wù)端C++應(yīng)用包括C++方法和C++動(dòng)態(tài)庫兩部分,其中C++方法采用C++反射機(jī)制將其信息通過Rest接口供中間件調(diào)用,中間件中的JAVA代理自動(dòng)加載C++動(dòng)態(tài)庫的函數(shù),并以服務(wù)的形式注冊到服務(wù)總線。服務(wù)總線包括傳輸客戶端、數(shù)據(jù)傳輸、傳輸服務(wù)器。傳輸客戶端發(fā)起服務(wù)請(qǐng)求,接收客戶端提供的方法和參數(shù),發(fā)送至傳輸服務(wù)器;傳輸過程中數(shù)據(jù)傳輸對(duì)方法和參數(shù)根據(jù)數(shù)據(jù)格式進(jìn)行編碼和解碼;傳輸服務(wù)器接收解碼后的方法和參數(shù),通過中間件調(diào)用服務(wù)端的C++方法??蛻舳伺c服務(wù)總線之間中間件的JAVA代理提供Rest接口,客戶端的C++應(yīng)用通過HttpClient來調(diào)用此Rest接口實(shí)現(xiàn)服務(wù)的調(diào)用;客戶端的JAVA應(yīng)用通過WebSocket調(diào)用服務(wù)端提供的服務(wù)。中間件的JAVA代理通過開源的java框架調(diào)用C++動(dòng)態(tài)庫,自動(dòng)實(shí)現(xiàn)Java和C++的數(shù)據(jù)類型映射。具體地,中間件的JAVA代理通過JNA(JavaNativeAccess)調(diào)用C++動(dòng)態(tài)庫,JNA提供了一個(gè)動(dòng)態(tài)的C++語言編寫的轉(zhuǎn)發(fā)器,來自動(dòng)實(shí)現(xiàn)Java和C++的數(shù)據(jù)類型映射。有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明公開的基于C++與Java混合編程的分布式服務(wù)系統(tǒng)具有以下優(yōu)點(diǎn):1、服務(wù)端和客戶端包括C++應(yīng)用和JAVA應(yīng)用,可同時(shí)支持C++和JAVA開發(fā)的服務(wù),不僅秉承了傳統(tǒng)C++軟件開發(fā)的優(yōu)勢,同時(shí)繼承了Java軟件設(shè)計(jì)的快速性與可靠性,拋棄了編程環(huán)境和語言的約束,不僅大大提高了程序開發(fā)效率,并且增強(qiáng)了軟件的運(yùn)行速度與穩(wěn)定性,具有很好的工程應(yīng)用價(jià)值;2、服務(wù)端提供的服務(wù)注冊到服務(wù)總線上,通過服務(wù)總線來統(tǒng)一管理、監(jiān)聽服務(wù),客戶端只需與服務(wù)總線連接即可,當(dāng)有多個(gè)服務(wù)端或多個(gè)客戶端時(shí),顯著降低連接數(shù),從而簡化了系統(tǒng)的連接;3、服務(wù)端與服務(wù)總線、客戶端與服務(wù)總線的連接都通過中間件,使系統(tǒng)支持多種平臺(tái)。附圖說明圖1是本發(fā)明公開的分布式服務(wù)系統(tǒng)的架構(gòu)圖;圖2是WebSocket通信流程圖。具體實(shí)施方式下面結(jié)合附圖和具體實(shí)施方式,進(jìn)一步闡明本發(fā)明。如圖1所示,是本發(fā)明公開的分布式服務(wù)系統(tǒng)架構(gòu)圖。本實(shí)施例以某信息戰(zhàn)對(duì)抗訓(xùn)練為例,進(jìn)一步闡釋本發(fā)明。對(duì)抗訓(xùn)練總共部署三臺(tái)計(jì)算機(jī),采用B/S架構(gòu)(Browser/Server,即瀏覽器和服務(wù)器架構(gòu))。其中一臺(tái)為數(shù)據(jù)服務(wù)器,存儲(chǔ)三維態(tài)勢顯示所需影像、地形及矢量等數(shù)據(jù);一臺(tái)為應(yīng)用服務(wù)器,一臺(tái)作為應(yīng)用客戶端。服務(wù)器與客戶端均國產(chǎn)化,配置龍芯3A芯片與中標(biāo)麒麟操作系統(tǒng)。應(yīng)用服務(wù)器端部署信息共享分發(fā)服務(wù)、態(tài)勢顯示組件及態(tài)勢分析組件。其中態(tài)勢顯示組件主要包括圖形繪制、目標(biāo)維護(hù)、場景切換、仿真控制等各類顯示功能;態(tài)勢分析組件實(shí)現(xiàn)偵察干擾分析、目標(biāo)態(tài)勢分析及戰(zhàn)場環(huán)境分析功能;信息共享分發(fā)服務(wù)、態(tài)勢顯示組件均采用Java語言開發(fā),用于提升界面的開發(fā)速度、穩(wěn)定性,實(shí)現(xiàn)跨平臺(tái)機(jī)制;態(tài)勢分析組件則使用C++語言開發(fā),以提升各類算法的執(zhí)行速度。數(shù)據(jù)服務(wù)器和應(yīng)用服務(wù)器均為分布式服務(wù)系統(tǒng)的服務(wù)端,各類服務(wù)通過服務(wù)總線進(jìn)行鏈接,最終實(shí)現(xiàn)分布式服務(wù)化。應(yīng)用客戶端為分布式服務(wù)系統(tǒng)的客戶端,安裝chrome瀏覽器,與數(shù)據(jù)服務(wù)器端通過websocket實(shí)現(xiàn)雙向?qū)崟r(shí)通信,與應(yīng)用服務(wù)器通過Http實(shí)現(xiàn)界面展現(xiàn),通過Rest實(shí)現(xiàn)數(shù)據(jù)傳輸。如圖2所示,為客戶端瀏覽器與數(shù)據(jù)服務(wù)器WebSocket通信流程圖。服務(wù)端與客戶端通過服務(wù)總線、中間件連接起來;服務(wù)總線、中間件分布于每個(gè)服務(wù)端、客戶端設(shè)備本地。通過數(shù)據(jù)服務(wù)器、應(yīng)用服務(wù)器和應(yīng)用客戶端三者協(xié)同工作,實(shí)現(xiàn)了復(fù)雜地形地貌的分層組織、符號(hào)顯示,實(shí)現(xiàn)瀏覽器端態(tài)勢要素的快捷組裝、顯示和交互控制。與服務(wù)器與客戶端均采用C++單一開發(fā)語言的信息戰(zhàn)對(duì)抗訓(xùn)練系統(tǒng)相比,基于C++與Java混合編程的系統(tǒng)在性能、適應(yīng)平臺(tái)、穩(wěn)定性、界面美觀與開發(fā)效率等方面存在優(yōu)勢,具體情況可見表1。表1單一開發(fā)語言與混合編程系統(tǒng)對(duì)比表名稱C++單一開發(fā)語言混合編程語言性能加載速度較慢加載速度較快,約為C++單一開發(fā)語言的4倍適應(yīng)平臺(tái)弱強(qiáng),可運(yùn)用在iPad、安卓等移動(dòng)終端穩(wěn)定性差強(qiáng),出現(xiàn)異常情況時(shí)不容易產(chǎn)生崩潰界面美觀差較為美觀開發(fā)效率較低較高,約為C++單一開發(fā)語言的5倍當(dāng)前第1頁1 2 3