薛建軍,周 杰,杜景林
(南京信息工程大學 電子與信息工程學院,江蘇 南京210044)
氣象數據是氣象信息系統 (氣象信息共享平臺)核心和基本組成部分,也是氣象信息系統提供服務的主要內容[1]。國家氣象事業發展規劃 (2000-2015)指出要求擴建實時氣象資料數據庫,建設地市級以上的適應短期氣候預測的歷史資料業務數據庫和氣象服務數據庫系統。目前,各相關單位也廣泛開展了實時氣象資料數據庫系統的建設工作。
按時效不同,可把氣象信息化資料分為實時資料和非實時資料。實時氣象資料指的是通過觀測或加工所得到的在較短時間內進行傳輸并使用的資料。這類資料的處理要求迅速、及時,主要通過計算機程序控制,把從傳輸系統接收的資料進行識別、分析、加工處理、質量控制、存儲備份等[2-3]。傳統的實時氣象資料處理系統大多針對單類資料專一處理,不能同時綜合處理多種實時資料。系統獲得單類 (單個)資料之后進行操作,任務完后才能使程序響應其他資料處理和用戶操作,不同的資料處理軟件一般使用各自獨立的數據庫系統。因此,不同類別的資料處理需要安裝配置各自對應的處理軟硬件系統,部署成本比較高,占用較多的網絡和數據庫資源,設備利用不充分,處理效率低下,不能很好滿足氣象數據實時采集與處理要求。此外,多種不同大小和類型處理系統的相對獨立存在不便于數據的集中控制和管理,不易為業務平臺和氣象數據的研究提供統一的數據支持和服務。為改善這種情況,本文設計并實現了改進型的實時氣象資料處理系統。該系統采用文中提出的實時與非確定時的資料處理策略,利用多線程技術設計開發了實時氣象資料綜合處理業務軟件,采用基于Oracle11g和SLES11專有數據庫服務器進行數據存儲和管理。系統實現了多種實時氣象資料綜合、高效加工處理以及海量氣象數據高性能存儲和管理,為構建良好的實時數據庫系統提供了一種有效的解決方案。
實時氣象資料的處理策略在本系統中至關重要,它會影響整個系統的數據處理的性能。根據實時氣象資料生成的屬性將其分為確定時實時資料和非確定時實時資料。確定時實時資料指的是生成、發布時間一般比較固定的資料,而非確定時實時資料的生成、發布時間就相對隨機,這兩類資料本文采用不同的處理策略。
確定時間生成發布資料獲取時間范圍確定。例如自動站報文每隔6分鐘生成一次,城鎮天氣報文 (168小時)在每日確定的3個時刻各發布一次。處理這類資料是在規定延遲時間內定時啟動程序調用相應線程進行實時處理。
非確定時間生成發布資料的獲取的時間比較隨機。一般取決于地域、季節、氣候等外界因素,資料生成無固定時刻,例如預警信息。在處理這類資料時,系統按照預先設置間隔時間掃描文件。掃描時若有新的待處理資料則主程序給相應的處理程序分配一個線程進行處理。這類資料的處理是在一個相對隨機的時間進行,因此稱非確定時處理。
采取這樣的策略:首先,提高系統的可用性,可以通過設置系統中定時模塊滿足在資料發布業務時效性規程改變情況下不影響系統的使用;其次,優化了系統資源分配,省略了定時發布資料在不必要時間段內的文件掃描,對于非確定時發布資料可以根據地域、季節、氣候等特點設定某些資料的掃描頻率。處理策略流程如圖1所示。
應用程序啟動時操作系統為程序分配內存及其他資源,內存和資源的物理分離叫做進程,是程序在計算機上的一次執行活動。進程可以包含多個線程,線程可以利用進程擁有的資源。線程要比進程小,幾乎不擁有系統資源,線程調度也比進程調度的開銷小。采用線程調度可以提高系統內多個程序間并發執行的效率,從而顯著提高系統資源的利用率和吞吐量。由于線程所需要的內存和程序開銷較小,同時多線程程序具有較高的執行效率,所以在應用程序的編寫過程中經常采用多線程技術來解決相應問題[4-5]。

圖1 處理策略流程
線程機制使系統具有多任務功能,用戶可同時運行多個程序,每個程序中又可以同時運行多個線程[6],這樣多個線程在同一進程中并發執行。在多線程程序中,當一個線程必須等待時,例如CPU在等待外部設備或網絡響應時,CPU可執行其它操作,這樣就大大縮短了程序執行的時間。為了提高氣象資料處理效率可以采用多線程技術,即在同一個程序中同時執行多個任務,將整個任務分成幾個線程,然后讓操作系統同時執行,從而提高程序的執行效率[7-9]。實際應用表明,以線程為單位并行處理氣象資料可以顯著增加系統的吞吐量,明顯縮短處理時間,有效提高CPU等計算機系統關鍵部件的有效使用率。多線程并行效率模型如圖2[10]所示。

圖2 多線程并行效率模型
實時資料處理系統與氣象通信系統、氣象業務平臺緊密耦合。實時氣象資料一般通過氣象部門專用網實時獲取,氣象數據要為氣象業務平臺提供支持。資料處理業務軟件運行在處理平臺上,通過氣象部門內網從資料服務器獲得實時資料源文件,分析處理完成之后存儲到專有數據庫中,為氣象部門提供專業的服務、產品數據支持和信息共享。系統業務統流程如圖3所示。

圖3 系統業務流程
主要流程:①資料獲取,從資料服務器上獲得資料(包括上級部門下發和本單位采集的資料);②資料處理,客戶端業務軟件進行文件級排錯,將正確的源文件根據不同資料類別分別采用實時和非確定的處理策越;③數據存儲,經過業務軟件分析處理、質量控制的數據存儲到服務器端專有數據庫;④數據應用,系統產生的氣象數據分別為各業務平臺和各類用戶提供多樣的數據支持和服務。
系統采用客戶/服務器 (C/S)結構,將任務合理分配到客戶端和服務器端,可降低系統的通訊開銷,可充分利用兩端硬件環境的優勢。系統面向相對固定的用戶群,對信息安全的控制能力強[11]。氣象資料處理業務軟件安裝在客戶端運行,氣象數據的存儲和管理在服務器端完成,整個系統部署在氣象部門專有網絡環境中,局域網之間通過專門服務器提供連接和數據交換。資料服務器、處理平臺、數據庫服務器、業務平臺都安裝在氣象部門內網中。實時氣象資料數據不僅為氣象部門各類業務平臺提供數據支持外,也可以為氣象部專門從事歷史數據管理、數據挖掘分析等業務的門內網用戶提供各類業務數據支持,同時外網的不同權限的用戶還可以通過Internet瀏覽、檢索、下載獲取數據信息,享受相應的數據服務。系統網絡拓撲如圖4所示。
軟件采取實時與非確定處理的處理策略和多線程編程技術。能夠并行處理自動站報文、測報月報表、預警信息、臺風報文、城鎮預報、城市短期預報等常見實時報文資料,能夠處理特殊定制需求的雷達、云圖等資料。例如將雷達基數據處理成能與人影業務中GIS平臺無縫對接的柵格數據。軟件主要由系統設置、定時設置、資料處理三大模塊組成。功能結構如圖5所示。
3.1.1 資料處理線程設計
客戶端業務軟件定時實時處理測報月報表 (A報、B報)、SP和DG、城鎮預報、短時天氣預報這幾類測報和預報產品,非確定時間實時處理預警信號、臺風、自動站實時報文這幾類測報產品和多普勒雷達基數據。一般情況下,創建少數幾個關鍵線程,用它來解決某個特定的問題[12]。所以系統創建10個數據處理子線程進行操作,當程序啟動時讀取INI文件,完成數據庫設置,定時設置,資料路徑設置等初始化工作,創建相應資料處理子程序線程。多線程處理流程如圖6所示。
具體步驟為:①應用程序啟動后,讀取INI初始化,如需更改設置,可在程序運行過程中進行設置,改變的信息寫入INI;②初始化完畢后,系統創建資料處理線程;③線程進入while循環,確定時處理進入休眠—等待狀態,非確定時處理線程掃描INI路徑下文件進入間隔掃描—休眠狀態;④定時喚醒實時處理線程,掃描INI路徑下文件;⑤有新文件,分別進入各自處理函數、分析解析文件、處理入庫,更新日志,修改已處理文件名;⑥如無新文件,進入歷史文件操作函數,處理符合條件的歷史文件;⑦程序重復上述工作;⑧終止線程,程序結束。

圖4 系統網絡拓撲


3.1.2 NET下多線程編程
從本質上和結構來說,.NET是一個多線程的環境。CRL內置支持多線程應用,任何.NET框架下的語言,包括Visual C#在內,實現多線程時不再需要使用Win32API,可直接使用系統類提供的對象和方。在VS2005中實現多線程非常方便,System.Threading命名空間為開發人員提供了多線程編程的類和接口,可直接用它提供的內容建立多線程應用程序。
System.Threading.Thread類可用來創建并控制線程,其定義了多種方法,其中用 Thread.Start()、Thread.Stop ()、Thread.Resume ()、Thread.Abort ()、Thread.Suspend()、Thread.Join()等方法操縱線程,還可通過Thread.Sleep ()、Thread.IsAlive ()、Thread.IsBackground()等方法設置線程狀態。
System.Threading.Thread.Priority枚舉了線程的優先級別,它可以控制線程是否可到CPU時間。高優先級線程通常比低優先級線程優先得到CPU時間,若不止一個高優先級線程,則操作系統將在這些線程間循環分配CPU時間。C#中線程優先級從高到低分為Highest、Above、Normal、Normal、BelowNormal、Lowest 5級[13]。
目前,實時氣象資料呈現幾何級倍率增長,數據在海量存儲備份、查詢檢索效率、多粒度挖掘分析等方面提出更要高的要求。因此要對傳統實時氣象資料數據庫系統在存儲容量、吞吐率、穩定性、安全性、兼容性等關鍵技術指標進行優化。Oracle支持海量數據存儲和管理,其最新發布的Oracle 11g能夠存儲十億數量級的數據,可支撐大型的應用系統,采用了400多項新技術,在更改管理、故障診斷、性能管理、Data Guard管理、存儲管理和數據倉庫等方面有一些重要的創新[14]。Novell其旗下的Linux企業級解決方案產品,提供從桌面到數據中心的企業級應用計算環境安全可靠的基礎,在數據中心、工作組、桌面、安全和身份、以及資源管理等提供構建企業級解決方案所有重要的技術支持和開放標準[15]。SLES系列產品已列入中央國家機關政府集中采購目錄,在國內氣象部門和得到廣泛應用。最新發布的SLES11完善了早期版本的很多功能,新增對Mono擴展的支持對聚類產品High Availability Extension的支持,它能提供更強的虛擬化能力、高可用性集群和更加靈活的維護和支持選項。
使用Oracle大型數據庫,可以滿足海量氣象數據的存儲需求,Oracle的出色性能,極大地提升了系統的數據吞吐量。使用Linux作為服務器的操作系統,提高了整個系統的穩定性[16]。此外,業務軟件綜合處理的多種產品海量數據統一存儲在同構的專一的數據系統中也便于管理和控制。因此采用Oracle11g和SLES11搭建系統專用數據庫服務器符合高性能存儲和管理技術指標和氣象部門業務需求規范。
使用VS2005集成開發工具,采用C#語言編程開發業務軟件。軟件試運行環境為Windows XP Professional SP3,.NET Framework 2.0,CPU 為Inter (R)Core (TM)2 Duo CPU E7400,內存3.5G。數據庫服務器在IBM X3800 8866-1RC上安裝SLES11企業版和Oracle11g構建。系統采用C/S架構部署在100M局域網內。實際運行表明系統的各項性能良好,滿足實時氣象資料綜合處理的性能要求和海量數據高性能存儲管理的性能指標。客戶端業務軟件主要功能界面如圖7所示,從左向右依次為資料處理界面、系統設置界面、定時設置界面。

圖7 業務軟件主要功能界面
本系統已投入到某市氣象局實際業務應用中,有效的改進了傳統的處理系統,實現了資料的高效率、集成化分析處理,實現了海量實時數據高性能存儲和管理,為業務應用、氣象數據挖掘等提供良好的數據支持,為構建良好實時數據庫系統提供了一個行之有效的方案。同時,系統的設計思想對其他行業海量實時數據的處理也具有參考意義。針對雷達和云圖數據產品過多的問題,軟件的后續版本也將進一步升級,實現更多基數據的定制處理。
[1]ZHAO Fang.Building of meteorological database system [C].Information Technology in Meteorological Field Development and Application,2006:191-194(in Chinese).[趙芳.氣象數據庫系統的建設 [C].2006年中國氣象學會信息技術在氣象領域的開發應用研討會,2006:191-194.]
[2]GAO Feng.The real-time meteorological database subsystem[C].Information Technology in Meteorological Field Development and Application,2006:196-200(in Chinese).[高峰.實時氣象資料數據庫分系統 [C].2006年中國氣象學會信息技術在氣象領域的開發應用研討會,2006:196-200.]
[3]LIU Xu,ZU Xuemei.Analysis on the importance of meteorological information data [J].Forest Investigation Design,2010,37 (3):29-30(in Chinese).[劉旭,祖雪梅.對氣象信息化資料重要性的探析 [J].林業勘查設計,2010,37(3):29-30.]
[4]GAO Shuliang,MA Yufa,YANG Dongkai.Implementation for network communication based on multithread and message[J].Computer Engineering and Design,2008,29 (2):323-325(in Chinese).[高書亮,馬玉發,楊東凱.基于多線程和消息的局域網通信程序實現 [J].計算機工程與設計,2008,29 (2):323-325.]
[5]MIAO Xianglin,WANG Guanhai,SUN Chao,et al.Research and exploitation in multiply threads technology on system of supervising protective information of transformer substation[J].Computer Engineering and Design,2005,26 (3):831-835(in Chinese).[繆相林,王觀海,孫超,等.多線程技術在變電站保護信息監測系統中的應用 [J].計算機工程與設計,2005,26 (3):831-835.]
[6]ZHANG Lineng,ZHANG Bin.Talk about the multi-thread programming on.Net platform [J].China Water Transport(Theory Edition),2006,4 (3):104-105(in Chinese).[張能立,張彬.談談在.Net下的多線程編程 [J].中國水運(理論版),2006,4 (3):104-105.]
[7]PU Chunfen.The practical application of C#background processing and multi-threading technology [J].Journal of Kunming University,2010,32 (3):82-85(in Chinese).[卜春芬.C#后臺處理與多線程技術的應用 [J].昆明學院學報,2010,32 (3):82-85.]
[8]LIU Shuang,SHI Guoyou,ZHANG Yuanqiang.Design and implementation of communication software based on TCP/IP protocol and multi-threading technology [J].Computer Engi-neering and Design,2010,31 (7)1417-1420 (in Chinese).[劉爽,史國友,張遠強.基于TCP/IP協議和多線程的通信軟件的設計與實現 [J].計算機工程與設計,2010,31 (7):1417-1420.]
[9]YANG Kaijie,LIU Qiuju,XU Tingrong.On mutil-thread concurrent control technology for thread pool [J].Computer Applications and Software,2010,27 (1):168-170 (in Chinese).[楊開杰,劉秋菊,徐汀榮.線程池的多線程并發控制技術研究 [J].計算機應用與軟件,2010,27 (1):168-170.]
[10]Josepb Albabari,Ben Albabari.C# 4.0IN A NUTSHELL the definitive reference[M].Sebastopol:O'Reilly Media Inc,2010:873-878.
[11]ZHANG Junping,ZHU Xiaodong.C/S and B/S mixed style and the application [C].First International Workshop on Education Technology and Computer Science,2009:682-686.
[12]GUO Hui.Efficiency of multi-threading [J].Computer Applications,2008,28 (12):141-143(in Chinese). [郭輝.多線程效率 [J].計算機應用,2008,28 (12):141-143.]
[13]Christian Nagel,Bill Evjen,Jay Glynn,et al.Profesional C#2008 [M].LI Ming,transl.Beijing:Tsinghua University Press,2008:483-489 (in Chinese).[Christian Nagel,Bill Evjen,Jay Glynn,等.C#高級編程 [M].李銘,譯.北京:清華大學出版社,2008:483-489.]
[14]Sam R Alapati,Charles Kim.Oracle data base11g:new feature for DBAS and developers[M].ZHONG Ming,WANG Jun,transl.Beijing:Posts & Telecom Press,2009:1-5(in Chinese).[Sam R Alapati,Charles Kim.Oracle數據庫管理藝術11g新特性 [M].鐘鳴,王君,譯.北京:人民郵電出版社,2009:1-5.]
[15]ZOU Zhen.Novell SUSE Linux enterprise officially listed in the central state organs government centralized procurement directory [J].China Government Procurement,2007,7:5-40(in Chinese).[鄒震.Novell SUSE Linux Enterprise正式列入中央國家機關政府集中采購目錄 [J].中國政府采購,2007,7:5-40.]
[16]HUA Liansheng,DING Xiansheng,L Gang.Meteoro-logical data sharing system based on oracle [J].Computer Application,2010,32 (2):162-164(in Chinese)[華連生,丁憲生,呂剛.基于Oracle的氣象數據共享系統 [J].計算機應用,2010,32 (2):162-164.]