邱宏茂 王 娟 李 健 商 杰 盖 磊 许朝阳
(禁核试北京国家数据中心和北京放射性核素实验室,北京 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获取非连续数据的数据管理要求,运行稳定可靠。