黃 志, 高鈺杰, 廖偉平
(廣西區(qū)氣象信息中心,廣西南寧530219)
根據(jù)廣西區(qū)局下發(fā)《關(guān)于調(diào)整自動氣象站觀測傳輸業(yè)務(wù)的通知》(桂氣測函[2011]31號)文件精神,自2011年5月23日09時(北京時)全區(qū)所有自動氣象站傳輸業(yè)務(wù)調(diào)整為30分鐘上傳一次觀測數(shù)據(jù)。
調(diào)整后自動站數(shù)據(jù)(大監(jiān)自動站和區(qū)域自動站)傳輸頻率為每半小時傳輸一次,每次共1400多個數(shù)據(jù)文件(目前共4種),以往的單線程處理程序?qū)?400多個文件采用串行處理,在國家局傳輸考核時效(整點(diǎn)8分鐘內(nèi))還是可以完成。
隨著單站數(shù)據(jù)的不斷增多和應(yīng)用需求的提高,9類自動站數(shù)據(jù)傳輸將在不久的將來成為現(xiàn)實(shí),屆時每次上傳的單站數(shù)據(jù)將為5000多個,如果遇到天氣過程則需要每10分鐘甚至每5分鐘進(jìn)行數(shù)據(jù)加密傳輸,以往的單線程的處理方式將很難在時效內(nèi)快速高效處理所有的單站文件,為此,擬在對文件類別分類的同時采用多線程多路實(shí)時并發(fā)處理機(jī)制,讓其每個獨(dú)立線程對相應(yīng)類別的自動站單站文件進(jìn)行數(shù)據(jù)文件合并打包、上傳以及信息入庫,從而實(shí)現(xiàn)每類數(shù)據(jù)都是隨來隨處理,極大提高處理時效。圖1為單線程自動站系統(tǒng)處理框圖。
Delphi是Borland公司推出的一個集成開發(fā)環(huán)境(IDE),使用的核心是由傳統(tǒng)Pascal語言發(fā)展而來的Object Pascal,以圖形用戶界面為開發(fā)環(huán)境,透過IDE、VCL工具與編譯器,配合連結(jié)數(shù)據(jù)庫的功能,構(gòu)成一個以面向?qū)ο蟪绦蛟O(shè)計(jì)為中心的應(yīng)用程序開發(fā)工具??稍?Windows3.x、Windows95、WindowsNT、WindowsXP、Windows Vista、Windows7等環(huán)境下使用 。當(dāng)前 ,DELPHI也可以在LINUX平臺上開發(fā)應(yīng)用,其在LINUX上的對應(yīng)產(chǎn)品Kylix。
Delphi被稱為第四代編程語言,具有簡單、高效、功能強(qiáng)大的特點(diǎn),提供各種開發(fā)工具,包括集成環(huán)境、圖像編輯(Image Editor),以及各種開發(fā)數(shù)據(jù)庫的應(yīng)用程序,如DesktopDataBase Expert等。除此之外,還允許用戶掛接其他的應(yīng)用程序開發(fā)工具,如Borland公司的資源編輯器(Resourse Workshop)。在Delphi眾多的優(yōu)勢當(dāng)中,在數(shù)據(jù)庫方面的特長顯得尤為突出:適應(yīng)于多種數(shù)據(jù)庫結(jié)構(gòu),從客戶機(jī)/服務(wù)機(jī)模式到多層數(shù)據(jù)結(jié)構(gòu)模式;高效率的數(shù)據(jù)庫管理系統(tǒng)和新一代更先進(jìn)的數(shù)據(jù)庫引擎;最新的數(shù)據(jù)分析手段和提供大量的企業(yè)組件。
圖1 單線程自動站系統(tǒng)處理框圖
每個正在系統(tǒng)上運(yùn)行的程序都是一個進(jìn)程,進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運(yùn)行活動,進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單位。線程是進(jìn)程的一個實(shí)體,是CPU調(diào)度和分派的基本單位,是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位。線程不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源。一個線程可以創(chuàng)建和撤銷另一個線程;同一個進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行。
單線程就是一個進(jìn)程中只能有一個線程,剩下的進(jìn)程必須等待當(dāng)前的線程執(zhí)行完。這種模型的缺點(diǎn)在于系統(tǒng)完成一個很小的任務(wù)都必須占用很長的時間。多線程就是進(jìn)程有多個線程,是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。
圖2為多線程自動站系統(tǒng)處理框圖。對比圖1可以發(fā)現(xiàn),此系統(tǒng)對文件進(jìn)行了分類,并采用了單獨(dú)的FTP發(fā)送線程,每個線程各負(fù)其責(zé),互不干擾,即使某一線程運(yùn)行出現(xiàn)故障,其他線程也能正常運(yùn)行。
圖2 多線程自動站系統(tǒng)處理框圖
系統(tǒng)分為4個功能模塊,每個模塊由一個線程負(fù)責(zé),同時并發(fā)處理,分別介紹4個功能模塊的具體職能。系統(tǒng)處理邏輯流程圖如圖3所示。
功能模塊1:大監(jiān)站處理子線程
此線程主要負(fù)責(zé)大監(jiān)自動站數(shù)據(jù)文件的數(shù)據(jù)格式檢查,并對格檢后的單站文件進(jìn)行數(shù)據(jù)打包合并生成合并文件,然后發(fā)送至以FTP方式發(fā)往國家局的發(fā)送目錄;之后轉(zhuǎn)移單站文件至相應(yīng)的單站存儲目錄文件夾;最后將所有處理之后的單站數(shù)據(jù)文件寫入相應(yīng)的大監(jiān)站日志文件,以備日后查閱核對。
功能模塊2:區(qū)域站處理子線程
此線程與功能模塊1相似,通過區(qū)分文件名處理區(qū)域自動站單站文件。
功能模塊3:單雨量站處理子線程
此線程主要負(fù)責(zé)在已處理過的區(qū)域自動站數(shù)據(jù)中搜索其中的單雨量站,然后制作生成單雨量站文件,并轉(zhuǎn)移至至以FTP方式發(fā)往國家局的發(fā)送目錄;此外線程還負(fù)責(zé)單站源目錄的單站數(shù)量監(jiān)控,方便值班人員監(jiān)控程序的運(yùn)行狀況。(如果單站源目錄的文件數(shù)量不減少,證明程序卡死了,需要重啟,單線程就很難實(shí)現(xiàn)這樣的功能)
功能模塊4:FTP發(fā)送文件線程
此線程主要負(fù)責(zé)將發(fā)送目錄的合并文件通過FTP的方式發(fā)往國家局指定目錄,并將合并文件數(shù)據(jù)信息入庫備查,此外還有一些對入庫操作失敗的異常處理,以保證線程的正常運(yùn)行。
此外,系統(tǒng)可以根據(jù)實(shí)際的處理情況,增加和減少線程數(shù)量,隨著文件類型和文件數(shù)量的不斷增多,可以以模塊的形式增加線程,并且代碼的修改量也較小,適應(yīng)性很強(qiáng),方便系統(tǒng)的整合。
圖3 多線程自動站處理邏輯流程圖
圖4 系統(tǒng)運(yùn)行截面圖
目前系統(tǒng)已經(jīng)處于業(yè)務(wù)運(yùn)行狀態(tài),運(yùn)行情況良好并有很好的交互性,較之前的單線程處理模式處理速度明顯提升,不會出現(xiàn)單線程處理模式在程序運(yùn)行過程中因?yàn)槌绦颡?dú)占資源而造成界面空白鎖死,不能拖動和操作。表1為單線程與多線程系統(tǒng)運(yùn)行參數(shù)對比,圖4是系統(tǒng)運(yùn)行界面圖。
表1 單線程與多線程系統(tǒng)運(yùn)行參數(shù)對比
系統(tǒng)目前運(yùn)行穩(wěn)定,系統(tǒng)因?yàn)楫惓M顺龅臋C(jī)率較以前大為減小。由于采用了多線程技術(shù),使系統(tǒng)處理數(shù)據(jù)的速度較原來的單線程大幅提高,這為以后快速處理大數(shù)據(jù)量分鐘加密數(shù)據(jù)提供了保證。系統(tǒng)的線程之間相互獨(dú)立,代碼模塊可以重復(fù)利用,具有較好的拓展性,為類似系統(tǒng)整合提供了技術(shù)支持;可利用多線程將目前運(yùn)行的多個獨(dú)立子系統(tǒng)整合為集約化數(shù)據(jù)綜合處理系統(tǒng)。在以后的工作當(dāng)中可以將自動站的單站數(shù)據(jù)信息入庫功能添加至線程1和2中,以完善系統(tǒng)功能;同時盡可能改善程序結(jié)構(gòu)和容錯機(jī)制,提高系統(tǒng)運(yùn)行的穩(wěn)定性,減少異常處理故障的發(fā)生。
[1] 代峰燕,劉興華,劉松,等.多線程技術(shù)在測控系統(tǒng)中的實(shí)現(xiàn)[J].北京石油化工學(xué)院學(xué)報(bào),2011,(1).
[2] (日)結(jié)城浩.博碩文化譯.Java多線程設(shè)計(jì)模式[M].北京:中國鐵道出版社,2005.
[3] 電腦編程技巧與維護(hù)雜志社.DELPHI編程典型實(shí)例解析[M].北京:中國水利水電出版社,2007.
[4] 梁水,賽奎春.Delphi開發(fā)典型模塊大全[M].北京:人民郵電出版社,2009.
[5] 王惠平.基于多線程溫度控制專家系統(tǒng)[M].現(xiàn)代電子技術(shù),2012,35(2).
[6] 黃文鈺.Delphi 8程序設(shè)計(jì)經(jīng)典解析[M].北京:清華大學(xué)出版社,2006.
[7] 薛建軍,周杰,杜景林,等.基于多線程的實(shí)時與非確定時氣象資料處理[J].信息技術(shù),2011,(11).
[8] 侯雪蓮,張承明,高靖妹.多線程下載系統(tǒng)中的關(guān)鍵技術(shù)探析[J].北京電力高等??茖W(xué)校學(xué)報(bào),2011,(7).
[9] 梁水,張立科.Delphi開發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007.
[10] 寧正元.Delphi開發(fā)技術(shù)大全[M].北京:水利水電出版社,2005.