張金標,張恩紅
(廣東省氣象探測數(shù)據(jù)中心,廣州 510641)
氣象數(shù)據(jù)是氣象業(yè)務運行的根本,它為天氣預報、氣候分析、災害防范提供完備的資料,在氣象現(xiàn)代化發(fā)展過程中起著十分重要的作用。數(shù)據(jù)中心負責全省氣象觀測數(shù)據(jù)的采集、分發(fā)、共享;負責本地區(qū)的氣象產品的制作、分發(fā)、共享;負責國家局下發(fā)的數(shù)據(jù)的分發(fā)和共享。數(shù)據(jù)中心每天收集本地觀測數(shù)據(jù)、本地業(yè)務單位輸出數(shù)據(jù)及國家局下發(fā)的衛(wèi)星、數(shù)值預報、全國觀測數(shù)據(jù)超過500G。要將這些數(shù)據(jù)刻錄光盤并進行長期歸檔保存,是非常繁重一項任務。由于在刻錄之前需要對這些數(shù)據(jù)進行分類、處理,在歸檔之后要求能夠快速檢索到所需的信息,如果僅通過人工來處理,將耗費大量的人力物力。目前,對單一數(shù)據(jù)的處理和歸檔的研究較多[1-3],而對海量電子數(shù)據(jù)的歸檔處理研究主要是利用高效的存儲設備[4-7]或數(shù)據(jù)庫[8,9]方面的技術來提高存儲效率和存儲容量,并不特別注重軟件的數(shù)據(jù)處理能力,難以適應本項目復雜的數(shù)據(jù)處理方式和較高的實時數(shù)據(jù)吞吐量要求。因此,研制一套完善的、穩(wěn)定的、高效的氣象數(shù)據(jù)資料自動歸檔系統(tǒng)是非常有必要的,也是迫在眉睫的。
氣象數(shù)據(jù)歸檔具有數(shù)據(jù)量大、小文件多、數(shù)據(jù)處理復雜、實時吞吐量大等特點,系統(tǒng)需要進行數(shù)據(jù)復制、分類、加密、壓縮、建立索引、數(shù)據(jù)庫存儲、生成刻錄數(shù)據(jù)、光盤刻錄等諸多耗時操作,單任務單進程的處理系統(tǒng)將無法滿足刻錄系統(tǒng)的要求。線程是CPU可調度的、比進程更小的程序片段,線程的創(chuàng)建和線程間的調度的開銷遠遠小于進程的開銷,所以,將每個刻錄任務作為一個線程,將多個線程并行處理,可充分利用當前計算機系統(tǒng)的多核CPU優(yōu)勢,提高運行效率。 但是,多線程存在資源競爭問題[12,15],例如,當多個線程并行執(zhí)行大量文件復制時,由于存在對硬盤I/O接口的競爭,讀寫效率受到很大影響。因此,如果讓各個線程并行操作不同的運算部件,資源競爭將大大減少,有利于提高系統(tǒng)數(shù)據(jù)吞吐量。因此,我們采用線程流水線技術[10-15],將刻錄任務合理的分為多個步驟,使每個步驟盡量操作不同硬件資源,然后,每個步驟作為一個線程,同一任務的多個線程順序執(zhí)行,后一個任務的某個步驟必須等待前一個任務的相同步驟執(zhí)行完成后才能啟動。這樣既可以提高系統(tǒng)的處理能力,也可以最大限度地解決CPU、各運算部件、硬件設備I/O接口的資源競爭問題,全面提升系統(tǒng)性能。
該方案采用C/S架構,由自動刻錄系統(tǒng)、光盤信息管理系統(tǒng)、容災系統(tǒng)、遠程刻錄監(jiān)控系統(tǒng)四個部分組成,如圖1所示。本文主要討論自動刻錄系統(tǒng)的功能實現(xiàn),實線框內的部分,這也是該系統(tǒng)的核心部分。
圖1 系統(tǒng)組成及流程圖
圖2 光盤自動刻錄系統(tǒng)
該系統(tǒng)(圖2)是在整個大系統(tǒng)中的一部分,屬于刻錄管理下面的自動刻錄設置模塊下,通過這些配置,自動刻錄系統(tǒng)自動完成整個刻錄系統(tǒng)的數(shù)據(jù)處理、光盤刻錄、盤面打印等功能。本文討論的是該系統(tǒng)的核心內容,主要分為以下六個模塊:數(shù)據(jù)處理,包括文件目錄分析、生成MD5數(shù)字指紋、數(shù)據(jù)庫存儲;數(shù)據(jù)壓縮,包括文件分類設置、壓縮屬性設置、目錄壓縮;數(shù)據(jù)生成,包括光盤刻錄信息(光盤說明及文件信息索引)、光盤刻錄數(shù)據(jù)(分類數(shù)據(jù)文件、壓縮文件、二維碼圖像文件、數(shù)據(jù)索引文件、工具文件等);刻錄任務管理,包括生成刻錄任務、刻錄任務檢查、提交刻錄任務、雙機刻錄處理;光盤刻錄,包括刻錄狀態(tài)檢查、刻錄錯誤處理、刻錄完成處理、刻錄效驗、盤面打??;數(shù)據(jù)清理,光盤刻錄完成信息、待清理數(shù)據(jù)信息、清理數(shù)據(jù)。
在系統(tǒng)實現(xiàn)時,把該六個模塊獨立封裝,系統(tǒng)統(tǒng)一調度。由于這六個模塊所實現(xiàn)的功能所消耗的資源也不同,因此具備了多線程流水作業(yè)提高效率的可行性。數(shù)據(jù)處理主要是從遠程目錄,抓取數(shù)據(jù)到本地,同時分析所抓取的文件,并生成相應的MD5碼,這個環(huán)節(jié)主要是消耗IO和CPU資源;數(shù)據(jù)壓縮和數(shù)據(jù)生成兩個模塊主要是消耗內存資源;刻錄任務管理和光盤刻錄主要是要把數(shù)據(jù)推送到光盤刻錄機,對光盤刻錄系統(tǒng)的監(jiān)控,消耗的主要是IO;數(shù)據(jù)清理負責清理磁盤中已經刻錄的舊數(shù)據(jù),主要是消耗CPU。如果這些過程在一個進程線性完成的話,大概需要7、8個小時,每天只能完成三張光盤的刻錄,不能完成業(yè)務的要求。為了提高效率,把這個過程分成6個部分,由6個不同的線程來完成,再加上不同作業(yè)可以流水線似的提交,整個系統(tǒng)的效率就大大提高了,每天可以刻錄近十張光盤,基本可以達到業(yè)務的需求。
氣象觀測的數(shù)據(jù)文件數(shù)量極為龐大,每年提交刻錄的各種文件至少上億個,這些文件的信息都要保存到數(shù)據(jù)庫中以備以后查詢,對于如此龐大的數(shù)據(jù),顯然用傳統(tǒng)的數(shù)據(jù)處理方式無法完成。
該系統(tǒng)通過以下方式解決數(shù)據(jù)處理查詢問題,首先基于分層結構的分塊查找,即按照項目、光盤集、年度日期、目錄、文件等逐層訪問的方式建立數(shù)據(jù)塊,這樣可以極大地縮小數(shù)據(jù)查詢的范圍,同時大大減少數(shù)據(jù)查詢的總量;其次,建立聚集索引,提高數(shù)據(jù)查詢速度,同時在數(shù)據(jù)建立的過程中,數(shù)據(jù)的插入按聚集索引進行順序插入,減少由于中間插入造成數(shù)據(jù)庫處理性能的降低;最后,建立數(shù)據(jù)匯總索引,大量的操作通過匯總數(shù)據(jù)進行處理,減少了對最終文件的訪問頻率,極大提高了數(shù)據(jù)執(zhí)行的效率。
自動刻錄系統(tǒng)自動完成整個刻錄系統(tǒng)的數(shù)據(jù)獲取、數(shù)據(jù)處理、光盤刻錄、盤面打印等功能。該系統(tǒng)采用Windows Service后臺服務程序,保證24小時不間斷運行和斷電重啟后在非登錄狀態(tài)下自動啟動。
氣象數(shù)據(jù)具有數(shù)據(jù)量大、小文件數(shù)多,系統(tǒng)需要進行數(shù)據(jù)處理、文件壓縮、生成刻錄數(shù)據(jù)、光盤刻錄等諸多耗時操作,因此,我們將任務的每個步驟作為一個線程,同一任務的多個線程順序執(zhí)行,后一個任務的某個步驟必須等待前一個任務的相同步驟執(zhí)行完成后才能啟動,形成多線程流水線執(zhí)行結構,以最大限度地利用CPU、各種運算部件、硬件設備和I/O接口,解決資源競爭問題,全面提升系統(tǒng)性能。
流水線處理模式就是根據(jù)數(shù)據(jù)流向,將一個業(yè)務模塊產生的數(shù)據(jù)元組通過數(shù)據(jù)管道直接傳遞給使用它的下一個業(yè)務處理模塊。流水線上的業(yè)務處理模塊處于運作狀態(tài),直到流入流水線的所有數(shù)據(jù)被處理完畢。將流水線上的每一個業(yè)務模塊對應一個單獨的線程,就可以得到系統(tǒng)運行的多線程流水線模式[11]。
流水線結構的主要特點是系統(tǒng)不會由于線程數(shù)的增加而使處理能力下降,而是保持在一個恒定的水平上[10]。這一點類似于QUEUE方式的事務處理模式,當處理需求增加時,暫時不能處理的請求被放置在隊列中,而不會像分時系統(tǒng)中那樣直接在系統(tǒng)中分配處理資源,而對系統(tǒng)的性能造成影響。采用多線程流水線技術,可以合理的利用系統(tǒng)資源進行并行處理,充分的協(xié)調了系統(tǒng)中高速設備與低速設備之間的沖突,大大的提高了系統(tǒng)的吞吐量。
本系統(tǒng)中的刻錄任務包括數(shù)據(jù)處理 (包括文件目錄分析、MD5數(shù)字指紋生成、數(shù)據(jù)庫寫入等)、數(shù)據(jù)壓縮、生成光盤刻錄數(shù)據(jù)(文件按光盤定義分類復制存放)、刻錄任務管理、光盤刻錄(刻錄機讀取指定目錄數(shù)據(jù)到刻錄機內存并執(zhí)行刻錄)、數(shù)據(jù)清理等六個步驟。這六個步驟是順序執(zhí)行的,執(zhí)行時使用不同的I/O部件或對硬件的操作不同,所以可以采用六級流水結構并行處理各個刻錄步驟,提高執(zhí)行效率。
將每一個任務表示為 T1,T2,T3,…,Ti,…,Tn,第i 個任務 Ti的六個步驟 Ti1,Ti2,Ti3,Ti4,Ti5,Ti6分別作為一個線程順次執(zhí)行。當?shù)趇個任務的第j個線程Tij進行數(shù)據(jù)處理時,采用線程同步技術以保證與前一個任務 Ti-1的同級線程 Ti-1,j不同時執(zhí)行,以避免線程間的資源競爭。這樣,最多可以同時并行處理6個刻錄任務,充分利用了多處理器CPU的處理優(yōu)勢,減少了資源競爭,提高了數(shù)據(jù)處理的速度。
采用六級多線程流水線模式后,7個刻錄任務所用時間相當于2個刻錄任務單獨執(zhí)行所用時間,執(zhí)行速度提高了3.5倍。容易推算,當任務更多時,六級多線程流水線模式的任務執(zhí)行加速比[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日間的數(shù)據(jù)進行統(tǒng)計,檢測結果是否滿足大于500G/天的處理能力。刻錄任務管理是對刻錄系統(tǒng)和刻錄任務的錯誤檢查,占用時間忽略不計,不需要進行性能測試。
數(shù)據(jù)來源:2017年05月07日至2017年07月03日間的氣象系統(tǒng)實時觀測數(shù)據(jù)。
測試結論:通過對各個執(zhí)行環(huán)節(jié)處理能力的壓力測試,系統(tǒng)滿足數(shù)據(jù)處理能力不小于500GB/天的要求。
本系統(tǒng)采用基于線程流水線技術并行處理海量氣象數(shù)據(jù),對它進行分類、壓縮、光盤數(shù)據(jù)生成與刻錄等耗時操作,可以充分利用CPU、各種運算部件和硬件設備,解決資源競爭問題,同時,通過數(shù)據(jù)庫的分層結構設計提高數(shù)據(jù)庫處理能力,通過藍光技術提高大數(shù)據(jù)光盤刻錄速度,全面提升了系統(tǒng)運行效率。在此基礎上,設計并開發(fā)了集數(shù)據(jù)處理、光盤刻錄、盤面打印、光盤管理、遠程監(jiān)控和容災恢復于一體的海量氣象數(shù)據(jù)歸檔管理系統(tǒng),系統(tǒng)各項功能和指標均達到業(yè)務要求,自動化程度高,運行穩(wěn)定可靠。
[1]榮裕良,張霞,馬忠芬,等.松江智慧氣象為農服務系統(tǒng)開發(fā)研究[J].氣象研究與應用,2017,38(1):102-106.
[2]陳少斌,蘇彥,蒙炤臻,等.基于 Google Maps API技術的自動氣象站數(shù)據(jù)查詢系統(tǒng)[J].氣象研究與應用,2014,35(2):93-95.
[3]周展程,孫志強.基于GIS的自動氣象站數(shù)據(jù)業(yè)務平臺的實現(xiàn)[J].氣象研究與應用,2016,37(1):91-93.
[4]嚴文瑞,曹強,姚杰,等.一種面向大容量光盤庫的新型文件系統(tǒng)[J].計算機研究與發(fā)展,2015,52:1-8.
[5]繆嘉嘉,付印金,余沛毅,等.低能耗磁光混合歸檔系統(tǒng)的設計與實現(xiàn)[J].計算機技術與發(fā)展,2017,27(8):52-56.
[6]趙偉東.電子檔案藍光存儲應用探究[J].檔案學研究,2015,3:88-95.
[7]楊鵬.基于藍光存儲技術的氣象電子檔案存儲管理[J].信息與電腦,2015,(16):84-86.
[8]王瑞通,李煒春.大數(shù)據(jù)基礎存儲系統(tǒng)技術研究[J].計算機技術與發(fā)展,2017,27(08):66-72.
[9]宋麗娜.海量存儲系統(tǒng)中數(shù)據(jù)分級存儲的關鍵技術研究[D].長沙:國防科學技術大學碩士論文,2011.
[10]曾行吉,李瑩,宋瑤.地面氣象觀測數(shù)據(jù)入庫多線程并行設計與實現(xiàn) [J].氣象研究與應用,2017,38 (3):114-116.
[11]黎穎智,史彩霞,劉世學.關于異步多線程快速提取CIMISS數(shù)據(jù)入庫方法的研究與應用[J].氣象研究與應用,2018,39(1):118-120.
[12]胡曉峰,張亮紅,劉文怡,等.VC多線程流水線在數(shù)據(jù)存儲系統(tǒng)中的設計與實現(xiàn) [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.