許 靜
(中國電子科技集團(tuán)公司第五十四研究所,河北石家莊050081)
隨著現(xiàn)代信息技術(shù)的飛速發(fā)展,各種信息的需求及使用量大幅增加,高效的數(shù)據(jù)傳輸能力越來越重要。為此,人們對(duì)及時(shí)、可靠、高效地匯集和分發(fā)各類數(shù)據(jù)的能力也提出了越來越高的要求。信息收發(fā)系統(tǒng)就是這樣一個(gè)可將各種渠道獲得的數(shù)據(jù)匯集到一起并將其提供給信息處理中心的核心處理系統(tǒng),該系統(tǒng)效率的高低直接影響到后續(xù)各類處理服務(wù)器的服務(wù)質(zhì)量。
下面針對(duì)現(xiàn)代化信息匯集分發(fā)的要求,首先從該系統(tǒng)整體效能入手,提出了一套高效的系統(tǒng)解決方案,通過各種優(yōu)化策略,實(shí)現(xiàn)了實(shí)時(shí)、準(zhǔn)確、高效地獲取并分發(fā)數(shù)據(jù)的功能,并通過對(duì)實(shí)現(xiàn)系統(tǒng)的檢測(cè),進(jìn)一步分析了影響系統(tǒng)性能的關(guān)鍵點(diǎn)。
信息收發(fā)系統(tǒng)是整個(gè)大系統(tǒng)的信息匯集核心與前站,一般處于前端數(shù)據(jù)采集之后及進(jìn)入各處理中心前。它負(fù)責(zé)將外部各種來源的數(shù)據(jù)匯集起來,根據(jù)數(shù)據(jù)包中描述的內(nèi)容,進(jìn)行分類并分派給指定的服務(wù)器進(jìn)行后續(xù)處理。因此,信息收發(fā)系統(tǒng)是整個(gè)大系統(tǒng)的關(guān)鍵信息節(jié)點(diǎn),集信息收集、預(yù)處理和信息分發(fā)于一體,其典型場(chǎng)景的描述如圖1所示。
圖1 信息收發(fā)系統(tǒng)典型場(chǎng)景
信息收發(fā)系統(tǒng)可獲得終端信息和外部系統(tǒng)信息。各終端信息通過有線或無線通信方式上傳至其匯集節(jié)點(diǎn),然后再統(tǒng)一提供給信息收發(fā)系統(tǒng)。外部系統(tǒng)則可按照既定格式提供系統(tǒng)所需信息。
系統(tǒng)收到的信息按照頻度、種類和處理要求等可大體分成實(shí)時(shí)高頻度短數(shù)據(jù)包信息和非實(shí)時(shí)長報(bào)文數(shù)據(jù),而信息收發(fā)系統(tǒng)的效率就取決于對(duì)實(shí)時(shí)高頻度短數(shù)據(jù)包的處理能力。
信息收發(fā)系統(tǒng)的需求描述如下:
①及時(shí)獲取各數(shù)據(jù)源發(fā)送的各類數(shù)據(jù);
②初步檢驗(yàn)數(shù)據(jù)的正確性,并根據(jù)數(shù)據(jù)包中的相關(guān)信息將其分派給指定的處理服務(wù),對(duì)于不能根據(jù)數(shù)據(jù)內(nèi)容進(jìn)行分派的則根據(jù)其數(shù)據(jù)源地址將其分派給缺省的處理服務(wù);
③對(duì)原始數(shù)據(jù)包進(jìn)行存儲(chǔ),支持事后對(duì)原始數(shù)據(jù)進(jìn)行檢查和分析;
④具有持續(xù)處理海量、高頻度短數(shù)據(jù)包的能力;
⑤高實(shí)時(shí)性,要能夠及時(shí)、準(zhǔn)確地獲取和送達(dá)數(shù)據(jù);
⑥系統(tǒng)具有良好的易操作性、易維護(hù)性。
鑒于以上對(duì)信息收發(fā)系統(tǒng)的要求和網(wǎng)絡(luò)傳輸特點(diǎn),首先需確定系統(tǒng)所采用的通信協(xié)議。傳輸控制協(xié)議(Transmission Control Protocol,TCP)與用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP)是工作在傳輸層的2個(gè)核心協(xié)議,其主要差別如表1所示。
表1 TCP和 UDP協(xié)議比較
通過表1所示的TCP和UDP協(xié)議間的差別,經(jīng)過對(duì)信息安全性、可靠性及系統(tǒng)性能權(quán)衡后,最終在系統(tǒng)設(shè)計(jì)中選擇了TCP協(xié)議。
2.2.1 系統(tǒng)功能
根據(jù)系統(tǒng)需求及上述分析,可以確立信息收發(fā)系統(tǒng)主要由以下幾個(gè)部分組成:
①數(shù)據(jù)接收與解析:接收外部數(shù)據(jù)源發(fā)送來的各種數(shù)據(jù),并通過解析數(shù)據(jù)初步驗(yàn)證其的合法性;
②數(shù)據(jù)存儲(chǔ):將接收到的數(shù)據(jù)按照一定格式要求進(jìn)行存儲(chǔ);
③數(shù)據(jù)分派:按照解析后的數(shù)據(jù)內(nèi)容及預(yù)先設(shè)定的分類規(guī)則進(jìn)行分類分派,對(duì)于不能分類的報(bào)文則分派給缺省的服務(wù);
④傳輸用戶管理:管理與本系統(tǒng)建立通信連接的用戶及其相關(guān)信息;
⑤分發(fā)規(guī)則管理:對(duì)數(shù)據(jù)分派中依據(jù)的分類規(guī)則進(jìn)行維護(hù)和管理;
⑥日志管理:將系統(tǒng)中出現(xiàn)的錯(cuò)誤和特別情況進(jìn)行記錄和查詢;
⑦信息查詢:可以通過人機(jī)交互的方式,查詢接收數(shù)據(jù)的索引信息。
2.2.2 系統(tǒng)流程
信息收發(fā)系統(tǒng)是一個(gè)信息流動(dòng)的中心,不僅表現(xiàn)在其內(nèi)部大量信息的流動(dòng),還與信息源、信息收發(fā)系統(tǒng)以及各類后續(xù)服務(wù)之間有著既定的關(guān)系,其主要流程關(guān)系如圖2所示。
圖2 信息收發(fā)及其相關(guān)系統(tǒng)流程
圖2中斜虛線表示信息發(fā)送端、信息收發(fā)系統(tǒng)、服務(wù)接收端3者之間的信息流動(dòng),步驟①~步驟④完成網(wǎng)絡(luò)連接的建立、創(chuàng)建各種線程等初始化工作,步驟⑤和步驟⑥完成信息在3部分間的傳輸,步驟⑦和步驟⑧結(jié)束整個(gè)數(shù)據(jù)的發(fā)送接收過程。
此外,在系統(tǒng)的設(shè)計(jì)中采用了面向?qū)ο蟮脑O(shè)計(jì)方法,分別建立了多傳輸連接管理、分發(fā)規(guī)則、接收數(shù)據(jù)和日志等多個(gè)對(duì)象,以便完成系統(tǒng)的主體功能。針對(duì)本系統(tǒng)而言,在完成系統(tǒng)功能的基礎(chǔ)上,研究重點(diǎn)是如何提高系統(tǒng)效率。
所謂“高效”的信息收發(fā)是對(duì)系統(tǒng)整體性能方面提出的要求。系統(tǒng)的性能從整體上講是系統(tǒng)提供給用戶的眾多性能指標(biāo)的混合體,既包括硬件性能,也包括網(wǎng)絡(luò)能力和軟件性能。從軟件開發(fā)的角度來看,系統(tǒng)性能方面需要著重考慮的是系統(tǒng)架構(gòu)、數(shù)據(jù)庫設(shè)計(jì)、軟件設(shè)計(jì)和代碼實(shí)現(xiàn)等幾個(gè)方面。下面主要從軟件角度來進(jìn)行分析與研究,鑒于系統(tǒng)的硬件依賴性,也對(duì)硬件選型和網(wǎng)絡(luò)環(huán)境也進(jìn)行了初步探討。
網(wǎng)絡(luò)是信息收發(fā)的基礎(chǔ),其主要的性能指標(biāo)主要有3個(gè):帶寬、時(shí)延和帶寬時(shí)延積。在進(jìn)行網(wǎng)絡(luò)傳輸保障與優(yōu)化時(shí),需要考慮以下幾個(gè)方面:
①考察網(wǎng)絡(luò)中延遲是否影響到應(yīng)用;
②網(wǎng)絡(luò)持續(xù)的可用時(shí)間,即網(wǎng)絡(luò)的可用性;③帶寬是否影響了網(wǎng)絡(luò)性能;
④網(wǎng)絡(luò)負(fù)載是否過重,以至由于擁塞而導(dǎo)致數(shù)據(jù)包的丟失;
⑤網(wǎng)絡(luò)的基線標(biāo)準(zhǔn)水平如何。
若網(wǎng)絡(luò)環(huán)境不是造成系統(tǒng)性能的瓶頸,則服務(wù)器的性能就成為提高硬件性能的關(guān)鍵。作為通信服務(wù)器,其性能指標(biāo)以系統(tǒng)響應(yīng)速度和作業(yè)吞吐量為重點(diǎn),再盡可能選擇那些擴(kuò)展性強(qiáng)、易管理、高可靠性、能適應(yīng)未來業(yè)務(wù)發(fā)展而費(fèi)用能夠承受的服務(wù)器。
從信息收發(fā)系統(tǒng)的功能來看,該系統(tǒng)主要包括:數(shù)據(jù)接收與解析、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分派3大主體功能。從這3項(xiàng)主體功能初步分析可以得出,數(shù)據(jù)存儲(chǔ)是耗時(shí)最多且頻繁占用系統(tǒng)CPU和內(nèi)存的處理。為了減少數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)收發(fā)間的互相影響,采用了對(duì)數(shù)據(jù)接收、存儲(chǔ)和分發(fā)分別建立獨(dú)立的線程的設(shè)計(jì)思路。
在信息接收、發(fā)送線程中,其處理的是高頻度、小數(shù)據(jù)量的數(shù)據(jù)包,且分發(fā)的服務(wù)端的個(gè)數(shù)有限。因此,在高性能服務(wù)器的支持下,采用單一線程能夠完成收發(fā)任務(wù),就沒有必要采用多線程的網(wǎng)絡(luò)模型,這樣使得數(shù)據(jù)接收、存儲(chǔ)和發(fā)送的實(shí)現(xiàn)更簡潔,結(jié)構(gòu)更清晰。
存儲(chǔ)的傳輸數(shù)據(jù)需要為其他應(yīng)用服務(wù)且有支持事后查閱的能力。由此,系統(tǒng)中采用數(shù)據(jù)庫來存儲(chǔ)接收的數(shù)據(jù)。其存儲(chǔ)的物理位置可以在本地,也可以存儲(chǔ)于獨(dú)立的數(shù)據(jù)庫服務(wù)器。這就需要根據(jù)實(shí)際應(yīng)用的數(shù)據(jù)訪問量,在經(jīng)費(fèi)允許的條件下靈活選擇。
此外,還可以通過對(duì)數(shù)據(jù)庫的優(yōu)化提高數(shù)據(jù)存儲(chǔ)及讀取的效率,這里不再贅述。
信息收發(fā)系統(tǒng)開發(fā)的是一個(gè)服務(wù)器應(yīng)用,要在一個(gè)給定的時(shí)間同時(shí)控制幾個(gè)套接字,且性能要求高。
Windows套接字I/O模型中,重疊I/O模型比起select、WSAAsyncSelect、WSAEventSelect以及阻塞等模型來,更能使應(yīng)用程序能達(dá)到最佳的系統(tǒng)性能。重疊 I/O模型使用重疊數(shù)據(jù)結(jié)構(gòu)(WSAOVERLAPPED),一次投遞1個(gè)或多個(gè)Winsock I/O請(qǐng)求,并通知緩沖區(qū)收發(fā)系統(tǒng)直接使用數(shù)據(jù),進(jìn)而縮短了數(shù)據(jù)使用時(shí)間。而且,其CPU占有率和SOCKET連接數(shù)也有很好的表現(xiàn)。
管理重疊I/O請(qǐng)求的完成情況有事件對(duì)象通知和完成例程2種方法。這里采用事件對(duì)象通知并對(duì)其進(jìn)行了封裝。
如何在軟件運(yùn)行時(shí)合理地對(duì)計(jì)算機(jī)內(nèi)存資源的分配和使用,是提高系統(tǒng)運(yùn)行效率的重要手段。因此,除采用傳統(tǒng)的優(yōu)化的方法外,還特別注重了以下幾個(gè)方法的運(yùn)用:
①在進(jìn)行內(nèi)存管理時(shí)首先需注意內(nèi)存頁面的合理配置,盡量保持頁面連續(xù)、大小適當(dāng)且能夠及時(shí)清理不再使用的頁面;
②可以通過調(diào)整高速緩存區(qū)域的大小和及時(shí)釋放內(nèi)存空間的方法,提高數(shù)據(jù)交換的速度;
③針對(duì)高頻度小數(shù)據(jù)包的特點(diǎn),避免采用頻繁對(duì)內(nèi)存的申請(qǐng)與釋放操作。運(yùn)用空間換時(shí)間的思想,采用內(nèi)存塊管理技術(shù),將內(nèi)存操作降到最低;
④定義的內(nèi)存管理操作。在系統(tǒng)中采用一致的內(nèi)存管理機(jī)制,提高效率,避免了內(nèi)存泄露;
⑤精煉存儲(chǔ)數(shù)據(jù),優(yōu)化數(shù)據(jù)結(jié)構(gòu)。
在采用上述諸多措施與手段外,還運(yùn)用了服務(wù)器進(jìn)程的優(yōu)化和同步等編程技術(shù),進(jìn)一步提高了系統(tǒng)效率。
采取了將接收、處理、分發(fā)的處理過程分配在不同線程的軟件結(jié)構(gòu),并運(yùn)用重疊I/O模型及軟件編程各種優(yōu)化措施之后,進(jìn)一步對(duì)信息收發(fā)系統(tǒng)的效率進(jìn)行了驗(yàn)證。
驗(yàn)證的軟件環(huán)境采用了Windows系列操作系統(tǒng),SQL Server 2000完成數(shù)據(jù)存儲(chǔ),開發(fā)平臺(tái)選用Microsoft Visual Studio.Net 2003。
硬件設(shè)備分別采用了DELL臺(tái)式計(jì)算機(jī)和IBM工作站2種硬件設(shè)備作為信息收發(fā)服務(wù)器。其硬件配置如下:
①DELL臺(tái)式機(jī)的CUP為 2.79MHz,內(nèi)存512 MB,主板為INTEL 945芯片組;
②IBM工作站的CPU為Celeron 2.53 MHz,內(nèi)存為512 GB。
此外,為保證信息收發(fā)系統(tǒng)的正常運(yùn)行,還分別開發(fā)了數(shù)據(jù)驅(qū)動(dòng)源和后端接收服務(wù)的模擬程序。
為了獲得第一手原始素材,采用程序檢測(cè)法進(jìn)行系統(tǒng)性能指標(biāo)的測(cè)試和驗(yàn)證。即在信息收發(fā)系統(tǒng)中的關(guān)鍵點(diǎn)處加入程序測(cè)試探針,并記錄測(cè)試數(shù)據(jù),盡可能獲取接近真實(shí)情況的測(cè)試數(shù)據(jù)。
信息收發(fā)系統(tǒng)性能中處理時(shí)間為關(guān)鍵指標(biāo)。因此,分別在數(shù)據(jù)接收、內(nèi)存轉(zhuǎn)換、庫存儲(chǔ)和發(fā)送處理的前后采集時(shí)間,獲得各處理所花費(fèi)的時(shí)間,并加以整理與評(píng)估。
為進(jìn)一步驗(yàn)證數(shù)據(jù)包大小、數(shù)據(jù)量、發(fā)送頻度以及接收服務(wù)端數(shù)對(duì)系統(tǒng)性能的影響程度,在驗(yàn)證過程中,按照上述條件改變數(shù)據(jù)驅(qū)動(dòng)源提供的數(shù)據(jù),以便得到更詳盡的驗(yàn)證結(jié)果。
在DELL臺(tái)式機(jī)上進(jìn)行的部分檢測(cè)結(jié)果如表2所示,其中頻度為800條/s。
表2 DELL臺(tái)式機(jī)測(cè)試結(jié)果
由表2可以看出,系統(tǒng)的處理時(shí)間與分發(fā)對(duì)象的種類、分發(fā)頻率關(guān)系不大,而數(shù)據(jù)量的大小起到了重要作用。在數(shù)據(jù)量總體較小的情況下,采用合理的系統(tǒng)結(jié)構(gòu)、I/O模型以及對(duì)內(nèi)存的有關(guān)管理,可以完成信息收發(fā)的功能。若數(shù)據(jù)量過大,則需選擇高性能服務(wù)器。
在IBM工作站上進(jìn)行的部分測(cè)試結(jié)果如表3所示,其中頻度為800條/s。
表3 IBM服務(wù)器測(cè)試結(jié)果
數(shù)據(jù)量、數(shù)據(jù)獲取頻度與數(shù)據(jù)庫存儲(chǔ)時(shí)間之間的變化趨勢(shì)如圖3所示。
圖3 數(shù)據(jù)庫存儲(chǔ)測(cè)試結(jié)果
由此可見,數(shù)據(jù)接收、發(fā)送及內(nèi)存轉(zhuǎn)換所占時(shí)間的比重都很小,不是提高效率的關(guān)鍵。而數(shù)據(jù)庫存儲(chǔ)耗時(shí)長,成為提高效率的關(guān)鍵環(huán)節(jié)。經(jīng)過對(duì)數(shù)據(jù)庫進(jìn)行適當(dāng)優(yōu)化后,系統(tǒng)整體效率有明顯提升。
系統(tǒng)性能的研究與評(píng)價(jià)是一個(gè)方興未艾的研究方向。信息收發(fā)系統(tǒng)的作為信息系統(tǒng)的匯集與分發(fā)的關(guān)鍵環(huán)節(jié),其系統(tǒng)性能起到至關(guān)重要的作用。提高系統(tǒng)整體性能要從系統(tǒng)角度分析,針對(duì)各種影響因素采取優(yōu)化策略,并將其應(yīng)用于系統(tǒng)中。此外,還針對(duì)實(shí)際應(yīng)用情況進(jìn)一步進(jìn)行了驗(yàn)證與分析,從中找出了影響該系統(tǒng)性能的主要因素。通過上述研究,對(duì)提高此類系統(tǒng)的性能提出了參考模式,對(duì)類似系統(tǒng)性能的提升具有借鑒價(jià)值。
[1]BONDI A B.The Software Architect as the Guardian of System Performance and Scalability[C].Vancouver,Canada:Leadership and Management in Software Architecture,2009:28-31.
[2]CHANG JM,GEHRINGGER E.A High-performance Memoryallocatorfor Obiected-oriented System[J].IEEE Transactions on Computers,1996,45(3):357-366.
[3]任泰明.TCP/IP協(xié)議與網(wǎng)絡(luò)編程計(jì)[M].陜西:西安電子科技大學(xué)出版社,2004.
[4]羅軍舟,黎波濤,楊 明,等.TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)[M].北京:清華大學(xué)出版社,2004.
[5]趙文輝,周加林,徐 俊,等.網(wǎng)絡(luò)存儲(chǔ)技術(shù)[M].北京:清華大學(xué)出版社,2005.
[6]王文武,趙衛(wèi)東,王志成,等.高性能服務(wù)器底層網(wǎng)絡(luò)通信模塊的設(shè)計(jì)方法[J].計(jì)算機(jī)工程,2009,35(3):103-105.