邱宏茂 王 娟 李 健 商 杰 蓋 磊 許朝陽
(禁核試北京國家數據中心和北京放射性核素實驗室,北京 100085)
全面禁止核試驗條約(CTBT)的國際監測系統(IMS)由分布在全球的地震、放射性核素、水聲和次聲監測系統等設施組成,條約生效后,由國際數據中心(IDC)進行數據處理,用于常年不間斷地監測全球各地可能發生的違約事件。IDC接收、匯集、處理、分析來自IMS的數據并存檔[1],同時利用自動數據服務系統(AutoDRM)為各締約國免費提供標準產品,如標準事件清單、公報和原始數據等。因此,IDC擁有的豐富數據資源可以為各授權用戶使用。
禁核試北京國家數據中心(以下簡稱國家數據中心或NDC)是我國禁核試核查相關監測數據的收集、存儲、分析和處理中心,為國內外用戶提供相關數據服務。為了充分利用IDC的豐富資源,NDC實時數據處理系統被設計成可以根據定義的請求規則自動向IDC請求相關臺站的非連續數據,并加入實時處理系統進行處理,將IMS的部分臺站監測數據作為我國NDC的數據補充來源之一,提高自動處理的準確性。
每個授權用戶每天向IDC請求數據總量目前實測為1G。為了提高數據的使用效率,避免重復地向IDC申請數據,本文設計用郵件代理程序來實現對用戶數據請求的統一管理,在NDC數據處理過程中根據處理結果自動請求和獲取IDC的非連續數據,同時代理國內授權用戶提供服務和管理用戶向IDC獲取數據,充分利用了IDC豐富的數據資源。
IDC基本職能之一是按條約規定向各締約國提IMS數據和IDC產品[1]。分發的數據主要是IDC的標準產品包,另外還有各締約國要求的增強產品包,內容可以是IMS原始數據和IDC的中間結果等。目前,獲取IDC數據的方式有4種:①事先訂閱數據;②通過基于電子郵件或客戶端的自動數據服務系統;③通過瀏覽器訪問IDC的WEB服務器;④登錄到IDC,直接與它的數據庫進行人機交互操作。其中自動數據服務系統是給用戶提供產品自動服務的常用重要手段。
自動數據服務系統為用戶請求產品提供基于電子郵件或客戶端的自動產品服務。對于原始波形數據的索取,授權用戶只需通過電子郵件或客戶端給自動數據服務系統發送請求,按規定格式說明需要的數據類型、范圍、格式等,自動數據服務系統接收到請求后進行自動處理,從數據庫中取出指定的數據,用電子郵件或客戶端將數據傳回給用戶。當數據量大,超過一定的限度時,則數據被存放在指定的FTP服務器上,并用電子郵件或客戶端把數據的獲取方法告訴用戶,用戶可用FTP將數據取回。自動數據服務系統的設計基于GSE采用的協議和格式以及GSETT-3的要求[2]。圖1是自動數據服務系統的數據請求過程示意圖。

圖 1 自動數據服務系統的數據請求過程示意圖Fig. 1 Data request process of AutoDRM
自動數據服務系統以運行數據庫和歸檔數據庫系統為核心,通過電子郵件或客戶端信息應答對用戶數據的請求。自動數據服務系統包括Messages和Subscription兩個子系統,主要完成用戶通過電子郵件按規定格式提交的數據請求、訂閱以及自動處理過程中系統的請求應答。利用IDC的自動服務系統,用戶可以請求、訂閱IDC的產品和波形原始數據。
IDC數據產品中的地震、水聲、次聲數據分發采用傳輸協議IMS信息格式,放射性核素產品的分發采用RMS信息格式,雖然采用的格式不同但采用的傳輸方法是相同的,均采用電子郵件(E-MAIL)和文件傳輸協議(FTP)兩種方式,其中電子郵件為主要的方式。IMS和RMS信息的大小沒有限制,但信息的長短可以決定采用哪種協議來傳輸,數據量小于1M的信息常用電子郵件來傳輸,對于數據量大于1M的信息,通過FTP來傳輸,或者采用分割成幾個小的電子郵件來傳輸連續的IMS和RMS信息。一個IMS和RMS信息可以跨越幾個郵件和文件,也可能幾個IMS和RMS信息包含在一個郵件或文件中。信息中的ASCII信息行的長度可以長達1 024個字符,在默認情況下行的長度為132個字符。
NDC非連續數據的請求和接收主要依賴于電子郵件進行信息和數據的交換。電子郵件主要依賴因特網的域名系統(DNS)進行郵件的發送和接收。由于考慮安全因素,NDC內部網絡沒有接入因特網的域名系統,同時防火墻和郵件服務器也進行了安全限制,導致NDC內部網絡與因特網無法正常收發郵件,郵件的收發只能在DMZ區的郵件服務器上進行。因此,本方案修改了原有程序,設計了采用遠程傳輸文件的方法來代替內部網絡數據處理系統的郵件收發。將郵件體遠程傳輸和收發存儲到郵件服務器的不同分類目錄,以區別來自于IDC、NDC數據處理系統、NDC授權用戶的不同郵件信息。然后,在郵件服務器上由郵件代理程序進行向IDC請求數據和返回信息、NDC授權用戶數據請求信息、系統處理數據請求和返回信息進行關系的判定,并將相應的處理結果反饋給各類用戶。
設計的郵件代理程序需要滿足對3類不同來源的郵件體進行判別和相應處理。對于用戶的郵件數據請求,在數據處理系統可以滿足用戶請求的情況下,由郵件代理程序響應用戶,并將請求轉交給系統處理,系統處理完成后,將相應處理產品轉交給郵件代理程序,由郵件代理程序以郵件方式返還給用戶;在數據處理系統無法滿足用戶的情況下,系統將數據請求處理無法完成的信息轉交給郵件代理程序,由郵件代理程序向IDC發出數據請求,接收到IDC的郵件數據響應之后,郵件代理程序將數據發送給最初的申請用戶,同時將數據轉交一份給數據處理系統,并由數據處理系統歸檔存儲到數據庫里,當下次其他用戶請求相同數據時,數據處理系統不需要再向IDC請求數據就可以響應用戶的請求,避免數據的重復申請,圖2是數據請求郵件和響應郵件的整體傳輸流程。

圖 2 數據請求郵件和響應郵件的整體傳輸流程Fig. 2 The overall flow of requesting mail and responded mail
通過分析NDC數據處理系統已有的自動數據服務系統處理流程,數據處理系統內部產生的數據請求,請求郵件中的msg_id號與數據庫msgdisc表中的reqid、msgid、emailto字段存在對應關系;用戶請求郵件中的msg_id號與數據庫msgdisc表中的extmsgid、msgid、emailto字段存在對應關系[3]。對于用戶的請求郵件,需要代理向IDC申請數據的情況,根據數據庫表的id號對應關系,考慮在郵件代理程序中通過id號來追溯郵件的起始用戶,并在郵件代理中,對郵件體重新組裝,根據id號對應關系,替換id號,并將處理結果返還給授權用戶。
設計郵件代理程序重點需要考慮的問題:首先對接收的授權用戶郵件進行分析并作記錄;然后對授權用戶的郵件請求進行數據有無的判斷,如果NDC有數據,則將郵件交送給NDC的自動數據服務系統,否則將郵件轉發給IDC;其次對NDC響應的郵件進行分析,并根據記錄的記錄號將數據發送給請求用戶;最后需對IDC返回的郵件進行分析,并根據記錄的記錄號將數據發送給請求用戶,然后將數據轉交給NDC的自動數據服務系統進行數據歸檔。
我們首先對NDC內部的自動數據服務Messages子系統的郵件發送C程序進行了修改,采用遠程拷貝的方法將內部待發送的郵件體拷貝至郵件服務器,然后由郵件代理程序以IDC授權的郵件帳戶將郵件體發送至IDC,修改后的語句如下:

然后,根據前面對NDC數據請求管理的過程分析,采用Perl語言實現了該郵件代理程序,圖3是設計的郵件代理程序流程圖。

圖 3 郵件代理程序流程圖Fig. 3 The plot of mail agent’s program
其中處理過程中較復雜的情況是對請求數據有無的判斷,數據處理系統處理郵件請求產生兩種無數據的情況:一是數據處理系統沒有配置該臺站,也沒有數據;另一個是數據處理系統配置了該臺站,但沒有數據。郵件代理程序需要對數據處理系統處理郵件請求出現的各種情況進行分析判斷,并進行重新構造郵件向IDC請求數據。
IDC響應郵件返回后存儲到指定目錄,郵件代理程序需要判斷該郵件是數據處理系統本身還是授權用戶請求的,并重組后發送給相應用戶,同時將郵件數據遠程拷貝至數據處理系統的自動數據服務Messages子系統進行解析、歸檔存儲。
為保證郵件代理程序運行不間斷,采用UNIX的crontab自動運行功能,在間隔時間內檢查郵件代理進程是否運行,如進程中止運行,腳本會自動啟動郵件代理程序,保證數據請求和響應郵件的處理不會中斷。
請求得到的臺站數據需要存儲和歸檔到大型存儲介質,并保證用戶能有效檢索到已存儲數據。對于請求數據的存儲管理,使用數據處理系統已有的數據歸檔系統,以方便管理。郵件數據解析、存儲到數據庫和文件系統中后,由于需要長久保留,需要數據處理系統的歸檔系統將數據遷移到歸檔庫[4]。
目前NDC 7×24小時不間斷地接收和處理臺站的連續和非連續數據,并進行數據的歸檔存儲,連續數據的歸檔存儲是按天、按臺站來存儲,非連續數據的歸檔存儲是將一天所有臺站的非連續數據存為一個波形文件,較適合零散數據的歸檔存儲。
利用NDC測試平臺,對設計的郵件代理程序和相關處理機制進行了長期的測試,設計的方法和開發的程序可以在NDC數據處理系統對用戶數據請求無法滿足的情況下向IDC轉發數據請求,并將接收到的數據進行解析、存儲及返回給申請用戶,實現了數據請求的代理和管理。測試結果表明,該程序的功能以及運行的穩定性和可靠性均達到了設計目標,現已應用于NDC的實際數據處理系統中。
如何充分利用IMS的海量數據一直是NDC研究的重點之一,本文設計的郵件代理方法可以實現對NDC的授權用戶請求IMS數據的代理和管理,解決國內非IDC授權用戶獲取IMS數據的用戶限制,在IDC對其授權用戶每日數據請求總量有限制的條件下,避免重復地向IDC申請數據,滿足NDC授權用戶對IMS數據的需求。經過實際運行測試,程序可以滿足NDC向IDC獲取非連續數據的數據管理要求,運行穩定可靠。