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