張金標,張恩紅
(廣東省氣象探測數據中心,廣州 510641)
氣象數據是氣象業務運行的根本,它為天氣預報、氣候分析、災害防范提供完備的資料,在氣象現代化發展過程中起著十分重要的作用。數據中心負責全省氣象觀測數據的采集、分發、共享;負責本地區的氣象產品的制作、分發、共享;負責國家局下發的數據的分發和共享。數據中心每天收集本地觀測數據、本地業務單位輸出數據及國家局下發的衛星、數值預報、全國觀測數據超過500G。要將這些數據刻錄光盤并進行長期歸檔保存,是非常繁重一項任務。由于在刻錄之前需要對這些數據進行分類、處理,在歸檔之后要求能夠快速檢索到所需的信息,如果僅通過人工來處理,將耗費大量的人力物力。目前,對單一數據的處理和歸檔的研究較多[1-3],而對海量電子數據的歸檔處理研究主要是利用高效的存儲設備[4-7]或數據庫[8,9]方面的技術來提高存儲效率和存儲容量,并不特別注重軟件的數據處理能力,難以適應本項目復雜的數據處理方式和較高的實時數據吞吐量要求。因此,研制一套完善的、穩定的、高效的氣象數據資料自動歸檔系統是非常有必要的,也是迫在眉睫的。
氣象數據歸檔具有數據量大、小文件多、數據處理復雜、實時吞吐量大等特點,系統需要進行數據復制、分類、加密、壓縮、建立索引、數據庫存儲、生成刻錄數據、光盤刻錄等諸多耗時操作,單任務單進程的處理系統將無法滿足刻錄系統的要求。線程是CPU可調度的、比進程更小的程序片段,線程的創建和線程間的調度的開銷遠遠小于進程的開銷,所以,將每個刻錄任務作為一個線程,將多個線程并行處理,可充分利用當前計算機系統的多核CPU優勢,提高運行效率。 但是,多線程存在資源競爭問題[12,15],例如,當多個線程并行執行大量文件復制時,由于存在對硬盤I/O接口的競爭,讀寫效率受到很大影響。因此,如果讓各個線程并行操作不同的運算部件,資源競爭將大大減少,有利于提高系統數據吞吐量。因此,我們采用線程流水線技術[10-15],將刻錄任務合理的分為多個步驟,使每個步驟盡量操作不同硬件資源,然后,每個步驟作為一個線程,同一任務的多個線程順序執行,后一個任務的某個步驟必須等待前一個任務的相同步驟執行完成后才能啟動。這樣既可以提高系統的處理能力,也可以最大限度地解決CPU、各運算部件、硬件設備I/O接口的資源競爭問題,全面提升系統性能。
該方案采用C/S架構,由自動刻錄系統、光盤信息管理系統、容災系統、遠程刻錄監控系統四個部分組成,如圖1所示。本文主要討論自動刻錄系統的功能實現,實線框內的部分,這也是該系統的核心部分。

圖1 系統組成及流程圖

圖2 光盤自動刻錄系統
該系統(圖2)是在整個大系統中的一部分,屬于刻錄管理下面的自動刻錄設置模塊下,通過這些配置,自動刻錄系統自動完成整個刻錄系統的數據處理、光盤刻錄、盤面打印等功能。本文討論的是該系統的核心內容,主要分為以下六個模塊:數據處理,包括文件目錄分析、生成MD5數字指紋、數據庫存儲;數據壓縮,包括文件分類設置、壓縮屬性設置、目錄壓縮;數據生成,包括光盤刻錄信息(光盤說明及文件信息索引)、光盤刻錄數據(分類數據文件、壓縮文件、二維碼圖像文件、數據索引文件、工具文件等);刻錄任務管理,包括生成刻錄任務、刻錄任務檢查、提交刻錄任務、雙機刻錄處理;光盤刻錄,包括刻錄狀態檢查、刻錄錯誤處理、刻錄完成處理、刻錄效驗、盤面打印;數據清理,光盤刻錄完成信息、待清理數據信息、清理數據。
在系統實現時,把該六個模塊獨立封裝,系統統一調度。由于這六個模塊所實現的功能所消耗的資源也不同,因此具備了多線程流水作業提高效率的可行性。數據處理主要是從遠程目錄,抓取數據到本地,同時分析所抓取的文件,并生成相應的MD5碼,這個環節主要是消耗IO和CPU資源;數據壓縮和數據生成兩個模塊主要是消耗內存資源;刻錄任務管理和光盤刻錄主要是要把數據推送到光盤刻錄機,對光盤刻錄系統的監控,消耗的主要是IO;數據清理負責清理磁盤中已經刻錄的舊數據,主要是消耗CPU。如果這些過程在一個進程線性完成的話,大概需要7、8個小時,每天只能完成三張光盤的刻錄,不能完成業務的要求。為了提高效率,把這個過程分成6個部分,由6個不同的線程來完成,再加上不同作業可以流水線似的提交,整個系統的效率就大大提高了,每天可以刻錄近十張光盤,基本可以達到業務的需求。
氣象觀測的數據文件數量極為龐大,每年提交刻錄的各種文件至少上億個,這些文件的信息都要保存到數據庫中以備以后查詢,對于如此龐大的數據,顯然用傳統的數據處理方式無法完成。
該系統通過以下方式解決數據處理查詢問題,首先基于分層結構的分塊查找,即按照項目、光盤集、年度日期、目錄、文件等逐層訪問的方式建立數據塊,這樣可以極大地縮小數據查詢的范圍,同時大大減少數據查詢的總量;其次,建立聚集索引,提高數據查詢速度,同時在數據建立的過程中,數據的插入按聚集索引進行順序插入,減少由于中間插入造成數據庫處理性能的降低;最后,建立數據匯總索引,大量的操作通過匯總數據進行處理,減少了對最終文件的訪問頻率,極大提高了數據執行的效率。
自動刻錄系統自動完成整個刻錄系統的數據獲取、數據處理、光盤刻錄、盤面打印等功能。該系統采用Windows Service后臺服務程序,保證24小時不間斷運行和斷電重啟后在非登錄狀態下自動啟動。
氣象數據具有數據量大、小文件數多,系統需要進行數據處理、文件壓縮、生成刻錄數據、光盤刻錄等諸多耗時操作,因此,我們將任務的每個步驟作為一個線程,同一任務的多個線程順序執行,后一個任務的某個步驟必須等待前一個任務的相同步驟執行完成后才能啟動,形成多線程流水線執行結構,以最大限度地利用CPU、各種運算部件、硬件設備和I/O接口,解決資源競爭問題,全面提升系統性能。
流水線處理模式就是根據數據流向,將一個業務模塊產生的數據元組通過數據管道直接傳遞給使用它的下一個業務處理模塊。流水線上的業務處理模塊處于運作狀態,直到流入流水線的所有數據被處理完畢。將流水線上的每一個業務模塊對應一個單獨的線程,就可以得到系統運行的多線程流水線模式[11]。
流水線結構的主要特點是系統不會由于線程數的增加而使處理能力下降,而是保持在一個恒定的水平上[10]。這一點類似于QUEUE方式的事務處理模式,當處理需求增加時,暫時不能處理的請求被放置在隊列中,而不會像分時系統中那樣直接在系統中分配處理資源,而對系統的性能造成影響。采用多線程流水線技術,可以合理的利用系統資源進行并行處理,充分的協調了系統中高速設備與低速設備之間的沖突,大大的提高了系統的吞吐量。
本系統中的刻錄任務包括數據處理 (包括文件目錄分析、MD5數字指紋生成、數據庫寫入等)、數據壓縮、生成光盤刻錄數據(文件按光盤定義分類復制存放)、刻錄任務管理、光盤刻錄(刻錄機讀取指定目錄數據到刻錄機內存并執行刻錄)、數據清理等六個步驟。這六個步驟是順序執行的,執行時使用不同的I/O部件或對硬件的操作不同,所以可以采用六級流水結構并行處理各個刻錄步驟,提高執行效率。
將每一個任務表示為 T1,T2,T3,…,Ti,…,Tn,第i 個任務 Ti的六個步驟 Ti1,Ti2,Ti3,Ti4,Ti5,Ti6分別作為一個線程順次執行。當第i個任務的第j個線程Tij進行數據處理時,采用線程同步技術以保證與前一個任務 Ti-1的同級線程 Ti-1,j不同時執行,以避免線程間的資源競爭。這樣,最多可以同時并行處理6個刻錄任務,充分利用了多處理器CPU的處理優勢,減少了資源競爭,提高了數據處理的速度。
采用六級多線程流水線模式后,7個刻錄任務所用時間相當于2個刻錄任務單獨執行所用時間,執行速度提高了3.5倍。容易推算,當任務更多時,六級多線程流水線模式的任務執行加速比[8,9]最大將接近于6。
處理器采用Intel Xeon E5 2609 V3 6核CPU,雙CPU配置,共有12個處理器,內存32GB,硬盤3*2T,做了Raid 5磁盤陣列,4T硬盤空間可用。
單線程測試:只有幾個處理器能夠得到較好的利用,CPU的利用率在10%~25%之間。
多任務并行處理測試:12個處理器都得到較好的利用,CPU的利用率在90%以上。
測試內容:對2017年05月07日至2017年07月03日間的數據進行統計,檢測結果是否滿足大于500G/天的處理能力。刻錄任務管理是對刻錄系統和刻錄任務的錯誤檢查,占用時間忽略不計,不需要進行性能測試。
數據來源:2017年05月07日至2017年07月03日間的氣象系統實時觀測數據。
測試結論:通過對各個執行環節處理能力的壓力測試,系統滿足數據處理能力不小于500GB/天的要求。
本系統采用基于線程流水線技術并行處理海量氣象數據,對它進行分類、壓縮、光盤數據生成與刻錄等耗時操作,可以充分利用CPU、各種運算部件和硬件設備,解決資源競爭問題,同時,通過數據庫的分層結構設計提高數據庫處理能力,通過藍光技術提高大數據光盤刻錄速度,全面提升了系統運行效率。在此基礎上,設計并開發了集數據處理、光盤刻錄、盤面打印、光盤管理、遠程監控和容災恢復于一體的海量氣象數據歸檔管理系統,系統各項功能和指標均達到業務要求,自動化程度高,運行穩定可靠。
[1]榮裕良,張霞,馬忠芬,等.松江智慧氣象為農服務系統開發研究[J].氣象研究與應用,2017,38(1):102-106.
[2]陳少斌,蘇彥,蒙炤臻,等.基于 Google Maps API技術的自動氣象站數據查詢系統[J].氣象研究與應用,2014,35(2):93-95.
[3]周展程,孫志強.基于GIS的自動氣象站數據業務平臺的實現[J].氣象研究與應用,2016,37(1):91-93.
[4]嚴文瑞,曹強,姚杰,等.一種面向大容量光盤庫的新型文件系統[J].計算機研究與發展,2015,52:1-8.
[5]繆嘉嘉,付印金,余沛毅,等.低能耗磁光混合歸檔系統的設計與實現[J].計算機技術與發展,2017,27(8):52-56.
[6]趙偉東.電子檔案藍光存儲應用探究[J].檔案學研究,2015,3:88-95.
[7]楊鵬.基于藍光存儲技術的氣象電子檔案存儲管理[J].信息與電腦,2015,(16):84-86.
[8]王瑞通,李煒春.大數據基礎存儲系統技術研究[J].計算機技術與發展,2017,27(08):66-72.
[9]宋麗娜.海量存儲系統中數據分級存儲的關鍵技術研究[D].長沙:國防科學技術大學碩士論文,2011.
[10]曾行吉,李瑩,宋瑤.地面氣象觀測數據入庫多線程并行設計與實現 [J].氣象研究與應用,2017,38 (3):114-116.
[11]黎穎智,史彩霞,劉世學.關于異步多線程快速提取CIMISS數據入庫方法的研究與應用[J].氣象研究與應用,2018,39(1):118-120.
[12]胡曉峰,張亮紅,劉文怡,等.VC多線程流水線在數據存儲系統中的設計與實現 [J].電子器件,2016,39(4):964-967.
[13]季圓圓,張濤,王海鵬.基于線程流水線的多核線程調度策略[J].計算機工程,2013,39(2):279-287.
[14]王晶,樊曉椏,張盛兵,等.多核多線程結構線程調度策略研究[J].計算機科學,2007,34(9):256-258.
[15]曹斌,張霞,劉積仁.多線程Web服務器設計中的流水線技術[J].東北大學學報(自然科學版),1999,20(3),229-231.
[16]劉云生,陳世俊.基于多線程的流水線查詢處理方式[J].計算機應用,2004,24(6):54-56.