許 靜
(中國電子科技集團公司第五十四研究所,河北石家莊050081)
隨著現代信息技術的飛速發展,各種信息的需求及使用量大幅增加,高效的數據傳輸能力越來越重要。為此,人們對及時、可靠、高效地匯集和分發各類數據的能力也提出了越來越高的要求。信息收發系統就是這樣一個可將各種渠道獲得的數據匯集到一起并將其提供給信息處理中心的核心處理系統,該系統效率的高低直接影響到后續各類處理服務器的服務質量。
下面針對現代化信息匯集分發的要求,首先從該系統整體效能入手,提出了一套高效的系統解決方案,通過各種優化策略,實現了實時、準確、高效地獲取并分發數據的功能,并通過對實現系統的檢測,進一步分析了影響系統性能的關鍵點。
信息收發系統是整個大系統的信息匯集核心與前站,一般處于前端數據采集之后及進入各處理中心前。它負責將外部各種來源的數據匯集起來,根據數據包中描述的內容,進行分類并分派給指定的服務器進行后續處理。因此,信息收發系統是整個大系統的關鍵信息節點,集信息收集、預處理和信息分發于一體,其典型場景的描述如圖1所示。

圖1 信息收發系統典型場景
信息收發系統可獲得終端信息和外部系統信息。各終端信息通過有線或無線通信方式上傳至其匯集節點,然后再統一提供給信息收發系統。外部系統則可按照既定格式提供系統所需信息。
系統收到的信息按照頻度、種類和處理要求等可大體分成實時高頻度短數據包信息和非實時長報文數據,而信息收發系統的效率就取決于對實時高頻度短數據包的處理能力。
信息收發系統的需求描述如下:
①及時獲取各數據源發送的各類數據;
②初步檢驗數據的正確性,并根據數據包中的相關信息將其分派給指定的處理服務,對于不能根據數據內容進行分派的則根據其數據源地址將其分派給缺省的處理服務;
③對原始數據包進行存儲,支持事后對原始數據進行檢查和分析;
④具有持續處理海量、高頻度短數據包的能力;
⑤高實時性,要能夠及時、準確地獲取和送達數據;
⑥系統具有良好的易操作性、易維護性。
鑒于以上對信息收發系統的要求和網絡傳輸特點,首先需確定系統所采用的通信協議。傳輸控制協議(Transmission Control Protocol,TCP)與用戶數據報協議(User Datagram Protocol,UDP)是工作在傳輸層的2個核心協議,其主要差別如表1所示。

表1 TCP和 UDP協議比較
通過表1所示的TCP和UDP協議間的差別,經過對信息安全性、可靠性及系統性能權衡后,最終在系統設計中選擇了TCP協議。
2.2.1 系統功能
根據系統需求及上述分析,可以確立信息收發系統主要由以下幾個部分組成:
①數據接收與解析:接收外部數據源發送來的各種數據,并通過解析數據初步驗證其的合法性;
②數據存儲:將接收到的數據按照一定格式要求進行存儲;
③數據分派:按照解析后的數據內容及預先設定的分類規則進行分類分派,對于不能分類的報文則分派給缺省的服務;
④傳輸用戶管理:管理與本系統建立通信連接的用戶及其相關信息;
⑤分發規則管理:對數據分派中依據的分類規則進行維護和管理;
⑥日志管理:將系統中出現的錯誤和特別情況進行記錄和查詢;
⑦信息查詢:可以通過人機交互的方式,查詢接收數據的索引信息。
2.2.2 系統流程
信息收發系統是一個信息流動的中心,不僅表現在其內部大量信息的流動,還與信息源、信息收發系統以及各類后續服務之間有著既定的關系,其主要流程關系如圖2所示。

圖2 信息收發及其相關系統流程
圖2中斜虛線表示信息發送端、信息收發系統、服務接收端3者之間的信息流動,步驟①~步驟④完成網絡連接的建立、創建各種線程等初始化工作,步驟⑤和步驟⑥完成信息在3部分間的傳輸,步驟⑦和步驟⑧結束整個數據的發送接收過程。
此外,在系統的設計中采用了面向對象的設計方法,分別建立了多傳輸連接管理、分發規則、接收數據和日志等多個對象,以便完成系統的主體功能。針對本系統而言,在完成系統功能的基礎上,研究重點是如何提高系統效率。
所謂“高效”的信息收發是對系統整體性能方面提出的要求。系統的性能從整體上講是系統提供給用戶的眾多性能指標的混合體,既包括硬件性能,也包括網絡能力和軟件性能。從軟件開發的角度來看,系統性能方面需要著重考慮的是系統架構、數據庫設計、軟件設計和代碼實現等幾個方面。下面主要從軟件角度來進行分析與研究,鑒于系統的硬件依賴性,也對硬件選型和網絡環境也進行了初步探討。
網絡是信息收發的基礎,其主要的性能指標主要有3個:帶寬、時延和帶寬時延積。在進行網絡傳輸保障與優化時,需要考慮以下幾個方面:
①考察網絡中延遲是否影響到應用;
②網絡持續的可用時間,即網絡的可用性;③帶寬是否影響了網絡性能;
④網絡負載是否過重,以至由于擁塞而導致數據包的丟失;
⑤網絡的基線標準水平如何。
若網絡環境不是造成系統性能的瓶頸,則服務器的性能就成為提高硬件性能的關鍵。作為通信服務器,其性能指標以系統響應速度和作業吞吐量為重點,再盡可能選擇那些擴展性強、易管理、高可靠性、能適應未來業務發展而費用能夠承受的服務器。
從信息收發系統的功能來看,該系統主要包括:數據接收與解析、數據存儲、數據分派3大主體功能。從這3項主體功能初步分析可以得出,數據存儲是耗時最多且頻繁占用系統CPU和內存的處理。為了減少數據存儲與數據收發間的互相影響,采用了對數據接收、存儲和分發分別建立獨立的線程的設計思路。
在信息接收、發送線程中,其處理的是高頻度、小數據量的數據包,且分發的服務端的個數有限。因此,在高性能服務器的支持下,采用單一線程能夠完成收發任務,就沒有必要采用多線程的網絡模型,這樣使得數據接收、存儲和發送的實現更簡潔,結構更清晰。
存儲的傳輸數據需要為其他應用服務且有支持事后查閱的能力。由此,系統中采用數據庫來存儲接收的數據。其存儲的物理位置可以在本地,也可以存儲于獨立的數據庫服務器。這就需要根據實際應用的數據訪問量,在經費允許的條件下靈活選擇。
此外,還可以通過對數據庫的優化提高數據存儲及讀取的效率,這里不再贅述。
信息收發系統開發的是一個服務器應用,要在一個給定的時間同時控制幾個套接字,且性能要求高。
Windows套接字I/O模型中,重疊I/O模型比起select、WSAAsyncSelect、WSAEventSelect以及阻塞等模型來,更能使應用程序能達到最佳的系統性能。重疊 I/O模型使用重疊數據結構(WSAOVERLAPPED),一次投遞1個或多個Winsock I/O請求,并通知緩沖區收發系統直接使用數據,進而縮短了數據使用時間。而且,其CPU占有率和SOCKET連接數也有很好的表現。
管理重疊I/O請求的完成情況有事件對象通知和完成例程2種方法。這里采用事件對象通知并對其進行了封裝。
如何在軟件運行時合理地對計算機內存資源的分配和使用,是提高系統運行效率的重要手段。因此,除采用傳統的優化的方法外,還特別注重了以下幾個方法的運用:
①在進行內存管理時首先需注意內存頁面的合理配置,盡量保持頁面連續、大小適當且能夠及時清理不再使用的頁面;
②可以通過調整高速緩存區域的大小和及時釋放內存空間的方法,提高數據交換的速度;
③針對高頻度小數據包的特點,避免采用頻繁對內存的申請與釋放操作。運用空間換時間的思想,采用內存塊管理技術,將內存操作降到最低;
④定義的內存管理操作。在系統中采用一致的內存管理機制,提高效率,避免了內存泄露;
⑤精煉存儲數據,優化數據結構。
在采用上述諸多措施與手段外,還運用了服務器進程的優化和同步等編程技術,進一步提高了系統效率。
采取了將接收、處理、分發的處理過程分配在不同線程的軟件結構,并運用重疊I/O模型及軟件編程各種優化措施之后,進一步對信息收發系統的效率進行了驗證。
驗證的軟件環境采用了Windows系列操作系統,SQL Server 2000完成數據存儲,開發平臺選用Microsoft Visual Studio.Net 2003。
硬件設備分別采用了DELL臺式計算機和IBM工作站2種硬件設備作為信息收發服務器。其硬件配置如下:
①DELL臺式機的CUP為 2.79MHz,內存512 MB,主板為INTEL 945芯片組;
②IBM工作站的CPU為Celeron 2.53 MHz,內存為512 GB。
此外,為保證信息收發系統的正常運行,還分別開發了數據驅動源和后端接收服務的模擬程序。
為了獲得第一手原始素材,采用程序檢測法進行系統性能指標的測試和驗證。即在信息收發系統中的關鍵點處加入程序測試探針,并記錄測試數據,盡可能獲取接近真實情況的測試數據。
信息收發系統性能中處理時間為關鍵指標。因此,分別在數據接收、內存轉換、庫存儲和發送處理的前后采集時間,獲得各處理所花費的時間,并加以整理與評估。
為進一步驗證數據包大小、數據量、發送頻度以及接收服務端數對系統性能的影響程度,在驗證過程中,按照上述條件改變數據驅動源提供的數據,以便得到更詳盡的驗證結果。
在DELL臺式機上進行的部分檢測結果如表2所示,其中頻度為800條/s。

表2 DELL臺式機測試結果
由表2可以看出,系統的處理時間與分發對象的種類、分發頻率關系不大,而數據量的大小起到了重要作用。在數據量總體較小的情況下,采用合理的系統結構、I/O模型以及對內存的有關管理,可以完成信息收發的功能。若數據量過大,則需選擇高性能服務器。
在IBM工作站上進行的部分測試結果如表3所示,其中頻度為800條/s。

表3 IBM服務器測試結果
數據量、數據獲取頻度與數據庫存儲時間之間的變化趨勢如圖3所示。

圖3 數據庫存儲測試結果
由此可見,數據接收、發送及內存轉換所占時間的比重都很小,不是提高效率的關鍵。而數據庫存儲耗時長,成為提高效率的關鍵環節。經過對數據庫進行適當優化后,系統整體效率有明顯提升。
系統性能的研究與評價是一個方興未艾的研究方向。信息收發系統的作為信息系統的匯集與分發的關鍵環節,其系統性能起到至關重要的作用。提高系統整體性能要從系統角度分析,針對各種影響因素采取優化策略,并將其應用于系統中。此外,還針對實際應用情況進一步進行了驗證與分析,從中找出了影響該系統性能的主要因素。通過上述研究,對提高此類系統的性能提出了參考模式,對類似系統性能的提升具有借鑒價值。
[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協議與網絡編程計[M].陜西:西安電子科技大學出版社,2004.
[4]羅軍舟,黎波濤,楊 明,等.TCP/IP協議及網絡編程技術[M].北京:清華大學出版社,2004.
[5]趙文輝,周加林,徐 俊,等.網絡存儲技術[M].北京:清華大學出版社,2005.
[6]王文武,趙衛東,王志成,等.高性能服務器底層網絡通信模塊的設計方法[J].計算機工程,2009,35(3):103-105.