邱宏茂 王 娟 李 健 商 杰 蓋 磊 許朝陽(yáng)
(禁核試北京國(guó)家數(shù)據(jù)中心和北京放射性核素實(shí)驗(yàn)室,北京 100085)
全面禁止核試驗(yàn)條約(CTBT)的國(guó)際監(jiān)測(cè)系統(tǒng)(IMS)由分布在全球的地震、放射性核素、水聲和次聲監(jiān)測(cè)系統(tǒng)等設(shè)施組成,條約生效后,由國(guó)際數(shù)據(jù)中心(IDC)進(jìn)行數(shù)據(jù)處理,用于常年不間斷地監(jiān)測(cè)全球各地可能發(fā)生的違約事件。IDC接收、匯集、處理、分析來(lái)自IMS的數(shù)據(jù)并存檔[1],同時(shí)利用自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)(AutoDRM)為各締約國(guó)免費(fèi)提供標(biāo)準(zhǔn)產(chǎn)品,如標(biāo)準(zhǔn)事件清單、公報(bào)和原始數(shù)據(jù)等。因此,IDC擁有的豐富數(shù)據(jù)資源可以為各授權(quán)用戶(hù)使用。
禁核試北京國(guó)家數(shù)據(jù)中心(以下簡(jiǎn)稱(chēng)國(guó)家數(shù)據(jù)中心或NDC)是我國(guó)禁核試核查相關(guān)監(jiān)測(cè)數(shù)據(jù)的收集、存儲(chǔ)、分析和處理中心,為國(guó)內(nèi)外用戶(hù)提供相關(guān)數(shù)據(jù)服務(wù)。為了充分利用IDC的豐富資源,NDC實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)被設(shè)計(jì)成可以根據(jù)定義的請(qǐng)求規(guī)則自動(dòng)向IDC請(qǐng)求相關(guān)臺(tái)站的非連續(xù)數(shù)據(jù),并加入實(shí)時(shí)處理系統(tǒng)進(jìn)行處理,將IMS的部分臺(tái)站監(jiān)測(cè)數(shù)據(jù)作為我國(guó)NDC的數(shù)據(jù)補(bǔ)充來(lái)源之一,提高自動(dòng)處理的準(zhǔn)確性。
每個(gè)授權(quán)用戶(hù)每天向IDC請(qǐng)求數(shù)據(jù)總量目前實(shí)測(cè)為1G。為了提高數(shù)據(jù)的使用效率,避免重復(fù)地向IDC申請(qǐng)數(shù)據(jù),本文設(shè)計(jì)用郵件代理程序來(lái)實(shí)現(xiàn)對(duì)用戶(hù)數(shù)據(jù)請(qǐng)求的統(tǒng)一管理,在NDC數(shù)據(jù)處理過(guò)程中根據(jù)處理結(jié)果自動(dòng)請(qǐng)求和獲取IDC的非連續(xù)數(shù)據(jù),同時(shí)代理國(guó)內(nèi)授權(quán)用戶(hù)提供服務(wù)和管理用戶(hù)向IDC獲取數(shù)據(jù),充分利用了IDC豐富的數(shù)據(jù)資源。
IDC基本職能之一是按條約規(guī)定向各締約國(guó)提IMS數(shù)據(jù)和IDC產(chǎn)品[1]。分發(fā)的數(shù)據(jù)主要是IDC的標(biāo)準(zhǔn)產(chǎn)品包,另外還有各締約國(guó)要求的增強(qiáng)產(chǎn)品包,內(nèi)容可以是IMS原始數(shù)據(jù)和IDC的中間結(jié)果等。目前,獲取IDC數(shù)據(jù)的方式有4種:①事先訂閱數(shù)據(jù);②通過(guò)基于電子郵件或客戶(hù)端的自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng);③通過(guò)瀏覽器訪(fǎng)問(wèn)IDC的WEB服務(wù)器;④登錄到IDC,直接與它的數(shù)據(jù)庫(kù)進(jìn)行人機(jī)交互操作。其中自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)是給用戶(hù)提供產(chǎn)品自動(dòng)服務(wù)的常用重要手段。
自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)為用戶(hù)請(qǐng)求產(chǎn)品提供基于電子郵件或客戶(hù)端的自動(dòng)產(chǎn)品服務(wù)。對(duì)于原始波形數(shù)據(jù)的索取,授權(quán)用戶(hù)只需通過(guò)電子郵件或客戶(hù)端給自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)發(fā)送請(qǐng)求,按規(guī)定格式說(shuō)明需要的數(shù)據(jù)類(lèi)型、范圍、格式等,自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)接收到請(qǐng)求后進(jìn)行自動(dòng)處理,從數(shù)據(jù)庫(kù)中取出指定的數(shù)據(jù),用電子郵件或客戶(hù)端將數(shù)據(jù)傳回給用戶(hù)。當(dāng)數(shù)據(jù)量大,超過(guò)一定的限度時(shí),則數(shù)據(jù)被存放在指定的FTP服務(wù)器上,并用電子郵件或客戶(hù)端把數(shù)據(jù)的獲取方法告訴用戶(hù),用戶(hù)可用FTP將數(shù)據(jù)取回。自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)的設(shè)計(jì)基于GSE采用的協(xié)議和格式以及GSETT-3的要求[2]。圖1是自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)的數(shù)據(jù)請(qǐng)求過(guò)程示意圖。
圖 1 自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)的數(shù)據(jù)請(qǐng)求過(guò)程示意圖Fig. 1 Data request process of AutoDRM
自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)以運(yùn)行數(shù)據(jù)庫(kù)和歸檔數(shù)據(jù)庫(kù)系統(tǒng)為核心,通過(guò)電子郵件或客戶(hù)端信息應(yīng)答對(duì)用戶(hù)數(shù)據(jù)的請(qǐng)求。自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)包括Messages和Subscription兩個(gè)子系統(tǒng),主要完成用戶(hù)通過(guò)電子郵件按規(guī)定格式提交的數(shù)據(jù)請(qǐng)求、訂閱以及自動(dòng)處理過(guò)程中系統(tǒng)的請(qǐng)求應(yīng)答。利用IDC的自動(dòng)服務(wù)系統(tǒng),用戶(hù)可以請(qǐng)求、訂閱IDC的產(chǎn)品和波形原始數(shù)據(jù)。
IDC數(shù)據(jù)產(chǎn)品中的地震、水聲、次聲數(shù)據(jù)分發(fā)采用傳輸協(xié)議IMS信息格式,放射性核素產(chǎn)品的分發(fā)采用RMS信息格式,雖然采用的格式不同但采用的傳輸方法是相同的,均采用電子郵件(E-MAIL)和文件傳輸協(xié)議(FTP)兩種方式,其中電子郵件為主要的方式。IMS和RMS信息的大小沒(méi)有限制,但信息的長(zhǎng)短可以決定采用哪種協(xié)議來(lái)傳輸,數(shù)據(jù)量小于1M的信息常用電子郵件來(lái)傳輸,對(duì)于數(shù)據(jù)量大于1M的信息,通過(guò)FTP來(lái)傳輸,或者采用分割成幾個(gè)小的電子郵件來(lái)傳輸連續(xù)的IMS和RMS信息。一個(gè)IMS和RMS信息可以跨越幾個(gè)郵件和文件,也可能幾個(gè)IMS和RMS信息包含在一個(gè)郵件或文件中。信息中的ASCII信息行的長(zhǎng)度可以長(zhǎng)達(dá)1 024個(gè)字符,在默認(rèn)情況下行的長(zhǎng)度為132個(gè)字符。
NDC非連續(xù)數(shù)據(jù)的請(qǐng)求和接收主要依賴(lài)于電子郵件進(jìn)行信息和數(shù)據(jù)的交換。電子郵件主要依賴(lài)因特網(wǎng)的域名系統(tǒng)(DNS)進(jìn)行郵件的發(fā)送和接收。由于考慮安全因素,NDC內(nèi)部網(wǎng)絡(luò)沒(méi)有接入因特網(wǎng)的域名系統(tǒng),同時(shí)防火墻和郵件服務(wù)器也進(jìn)行了安全限制,導(dǎo)致NDC內(nèi)部網(wǎng)絡(luò)與因特網(wǎng)無(wú)法正常收發(fā)郵件,郵件的收發(fā)只能在DMZ區(qū)的郵件服務(wù)器上進(jìn)行。因此,本方案修改了原有程序,設(shè)計(jì)了采用遠(yuǎn)程傳輸文件的方法來(lái)代替內(nèi)部網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)的郵件收發(fā)。將郵件體遠(yuǎn)程傳輸和收發(fā)存儲(chǔ)到郵件服務(wù)器的不同分類(lèi)目錄,以區(qū)別來(lái)自于IDC、NDC數(shù)據(jù)處理系統(tǒng)、NDC授權(quán)用戶(hù)的不同郵件信息。然后,在郵件服務(wù)器上由郵件代理程序進(jìn)行向IDC請(qǐng)求數(shù)據(jù)和返回信息、NDC授權(quán)用戶(hù)數(shù)據(jù)請(qǐng)求信息、系統(tǒng)處理數(shù)據(jù)請(qǐng)求和返回信息進(jìn)行關(guān)系的判定,并將相應(yīng)的處理結(jié)果反饋給各類(lèi)用戶(hù)。
設(shè)計(jì)的郵件代理程序需要滿(mǎn)足對(duì)3類(lèi)不同來(lái)源的郵件體進(jìn)行判別和相應(yīng)處理。對(duì)于用戶(hù)的郵件數(shù)據(jù)請(qǐng)求,在數(shù)據(jù)處理系統(tǒng)可以滿(mǎn)足用戶(hù)請(qǐng)求的情況下,由郵件代理程序響應(yīng)用戶(hù),并將請(qǐng)求轉(zhuǎn)交給系統(tǒng)處理,系統(tǒng)處理完成后,將相應(yīng)處理產(chǎn)品轉(zhuǎn)交給郵件代理程序,由郵件代理程序以郵件方式返還給用戶(hù);在數(shù)據(jù)處理系統(tǒng)無(wú)法滿(mǎn)足用戶(hù)的情況下,系統(tǒng)將數(shù)據(jù)請(qǐng)求處理無(wú)法完成的信息轉(zhuǎn)交給郵件代理程序,由郵件代理程序向IDC發(fā)出數(shù)據(jù)請(qǐng)求,接收到IDC的郵件數(shù)據(jù)響應(yīng)之后,郵件代理程序?qū)?shù)據(jù)發(fā)送給最初的申請(qǐng)用戶(hù),同時(shí)將數(shù)據(jù)轉(zhuǎn)交一份給數(shù)據(jù)處理系統(tǒng),并由數(shù)據(jù)處理系統(tǒng)歸檔存儲(chǔ)到數(shù)據(jù)庫(kù)里,當(dāng)下次其他用戶(hù)請(qǐng)求相同數(shù)據(jù)時(shí),數(shù)據(jù)處理系統(tǒng)不需要再向IDC請(qǐng)求數(shù)據(jù)就可以響應(yīng)用戶(hù)的請(qǐng)求,避免數(shù)據(jù)的重復(fù)申請(qǐng),圖2是數(shù)據(jù)請(qǐng)求郵件和響應(yīng)郵件的整體傳輸流程。
圖 2 數(shù)據(jù)請(qǐng)求郵件和響應(yīng)郵件的整體傳輸流程Fig. 2 The overall flow of requesting mail and responded mail
通過(guò)分析NDC數(shù)據(jù)處理系統(tǒng)已有的自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)處理流程,數(shù)據(jù)處理系統(tǒng)內(nèi)部產(chǎn)生的數(shù)據(jù)請(qǐng)求,請(qǐng)求郵件中的msg_id號(hào)與數(shù)據(jù)庫(kù)msgdisc表中的reqid、msgid、emailto字段存在對(duì)應(yīng)關(guān)系;用戶(hù)請(qǐng)求郵件中的msg_id號(hào)與數(shù)據(jù)庫(kù)msgdisc表中的extmsgid、msgid、emailto字段存在對(duì)應(yīng)關(guān)系[3]。對(duì)于用戶(hù)的請(qǐng)求郵件,需要代理向IDC申請(qǐng)數(shù)據(jù)的情況,根據(jù)數(shù)據(jù)庫(kù)表的id號(hào)對(duì)應(yīng)關(guān)系,考慮在郵件代理程序中通過(guò)id號(hào)來(lái)追溯郵件的起始用戶(hù),并在郵件代理中,對(duì)郵件體重新組裝,根據(jù)id號(hào)對(duì)應(yīng)關(guān)系,替換id號(hào),并將處理結(jié)果返還給授權(quán)用戶(hù)。
設(shè)計(jì)郵件代理程序重點(diǎn)需要考慮的問(wèn)題:首先對(duì)接收的授權(quán)用戶(hù)郵件進(jìn)行分析并作記錄;然后對(duì)授權(quán)用戶(hù)的郵件請(qǐng)求進(jìn)行數(shù)據(jù)有無(wú)的判斷,如果NDC有數(shù)據(jù),則將郵件交送給NDC的自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng),否則將郵件轉(zhuǎn)發(fā)給IDC;其次對(duì)NDC響應(yīng)的郵件進(jìn)行分析,并根據(jù)記錄的記錄號(hào)將數(shù)據(jù)發(fā)送給請(qǐng)求用戶(hù);最后需對(duì)IDC返回的郵件進(jìn)行分析,并根據(jù)記錄的記錄號(hào)將數(shù)據(jù)發(fā)送給請(qǐng)求用戶(hù),然后將數(shù)據(jù)轉(zhuǎn)交給NDC的自動(dòng)數(shù)據(jù)服務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)歸檔。
我們首先對(duì)NDC內(nèi)部的自動(dòng)數(shù)據(jù)服務(wù)Messages子系統(tǒng)的郵件發(fā)送C程序進(jìn)行了修改,采用遠(yuǎn)程拷貝的方法將內(nèi)部待發(fā)送的郵件體拷貝至郵件服務(wù)器,然后由郵件代理程序以IDC授權(quán)的郵件帳戶(hù)將郵件體發(fā)送至IDC,修改后的語(yǔ)句如下:
然后,根據(jù)前面對(duì)NDC數(shù)據(jù)請(qǐng)求管理的過(guò)程分析,采用Perl語(yǔ)言實(shí)現(xiàn)了該郵件代理程序,圖3是設(shè)計(jì)的郵件代理程序流程圖。
圖 3 郵件代理程序流程圖Fig. 3 The plot of mail agent’s program
其中處理過(guò)程中較復(fù)雜的情況是對(duì)請(qǐng)求數(shù)據(jù)有無(wú)的判斷,數(shù)據(jù)處理系統(tǒng)處理郵件請(qǐng)求產(chǎn)生兩種無(wú)數(shù)據(jù)的情況:一是數(shù)據(jù)處理系統(tǒng)沒(méi)有配置該臺(tái)站,也沒(méi)有數(shù)據(jù);另一個(gè)是數(shù)據(jù)處理系統(tǒng)配置了該臺(tái)站,但沒(méi)有數(shù)據(jù)。郵件代理程序需要對(duì)數(shù)據(jù)處理系統(tǒng)處理郵件請(qǐng)求出現(xiàn)的各種情況進(jìn)行分析判斷,并進(jìn)行重新構(gòu)造郵件向IDC請(qǐng)求數(shù)據(jù)。
IDC響應(yīng)郵件返回后存儲(chǔ)到指定目錄,郵件代理程序需要判斷該郵件是數(shù)據(jù)處理系統(tǒng)本身還是授權(quán)用戶(hù)請(qǐng)求的,并重組后發(fā)送給相應(yīng)用戶(hù),同時(shí)將郵件數(shù)據(jù)遠(yuǎn)程拷貝至數(shù)據(jù)處理系統(tǒng)的自動(dòng)數(shù)據(jù)服務(wù)Messages子系統(tǒng)進(jìn)行解析、歸檔存儲(chǔ)。
為保證郵件代理程序運(yùn)行不間斷,采用UNIX的crontab自動(dòng)運(yùn)行功能,在間隔時(shí)間內(nèi)檢查郵件代理進(jìn)程是否運(yùn)行,如進(jìn)程中止運(yùn)行,腳本會(huì)自動(dòng)啟動(dòng)郵件代理程序,保證數(shù)據(jù)請(qǐng)求和響應(yīng)郵件的處理不會(huì)中斷。
請(qǐng)求得到的臺(tái)站數(shù)據(jù)需要存儲(chǔ)和歸檔到大型存儲(chǔ)介質(zhì),并保證用戶(hù)能有效檢索到已存儲(chǔ)數(shù)據(jù)。對(duì)于請(qǐng)求數(shù)據(jù)的存儲(chǔ)管理,使用數(shù)據(jù)處理系統(tǒng)已有的數(shù)據(jù)歸檔系統(tǒng),以方便管理。郵件數(shù)據(jù)解析、存儲(chǔ)到數(shù)據(jù)庫(kù)和文件系統(tǒng)中后,由于需要長(zhǎng)久保留,需要數(shù)據(jù)處理系統(tǒng)的歸檔系統(tǒng)將數(shù)據(jù)遷移到歸檔庫(kù)[4]。
目前NDC 7×24小時(shí)不間斷地接收和處理臺(tái)站的連續(xù)和非連續(xù)數(shù)據(jù),并進(jìn)行數(shù)據(jù)的歸檔存儲(chǔ),連續(xù)數(shù)據(jù)的歸檔存儲(chǔ)是按天、按臺(tái)站來(lái)存儲(chǔ),非連續(xù)數(shù)據(jù)的歸檔存儲(chǔ)是將一天所有臺(tái)站的非連續(xù)數(shù)據(jù)存為一個(gè)波形文件,較適合零散數(shù)據(jù)的歸檔存儲(chǔ)。
利用NDC測(cè)試平臺(tái),對(duì)設(shè)計(jì)的郵件代理程序和相關(guān)處理機(jī)制進(jìn)行了長(zhǎng)期的測(cè)試,設(shè)計(jì)的方法和開(kāi)發(fā)的程序可以在NDC數(shù)據(jù)處理系統(tǒng)對(duì)用戶(hù)數(shù)據(jù)請(qǐng)求無(wú)法滿(mǎn)足的情況下向IDC轉(zhuǎn)發(fā)數(shù)據(jù)請(qǐng)求,并將接收到的數(shù)據(jù)進(jìn)行解析、存儲(chǔ)及返回給申請(qǐng)用戶(hù),實(shí)現(xiàn)了數(shù)據(jù)請(qǐng)求的代理和管理。測(cè)試結(jié)果表明,該程序的功能以及運(yùn)行的穩(wěn)定性和可靠性均達(dá)到了設(shè)計(jì)目標(biāo),現(xiàn)已應(yīng)用于NDC的實(shí)際數(shù)據(jù)處理系統(tǒng)中。
如何充分利用IMS的海量數(shù)據(jù)一直是NDC研究的重點(diǎn)之一,本文設(shè)計(jì)的郵件代理方法可以實(shí)現(xiàn)對(duì)NDC的授權(quán)用戶(hù)請(qǐng)求IMS數(shù)據(jù)的代理和管理,解決國(guó)內(nèi)非IDC授權(quán)用戶(hù)獲取IMS數(shù)據(jù)的用戶(hù)限制,在IDC對(duì)其授權(quán)用戶(hù)每日數(shù)據(jù)請(qǐng)求總量有限制的條件下,避免重復(fù)地向IDC申請(qǐng)數(shù)據(jù),滿(mǎn)足NDC授權(quán)用戶(hù)對(duì)IMS數(shù)據(jù)的需求。經(jīng)過(guò)實(shí)際運(yùn)行測(cè)試,程序可以滿(mǎn)足NDC向IDC獲取非連續(xù)數(shù)據(jù)的數(shù)據(jù)管理要求,運(yùn)行穩(wěn)定可靠。