基于Python的气象资料传输工具设计与实现

2020-01-18 05:51张新禹
电子技术与软件工程 2019年24期
关键词:日志报文气象

文/张新禹

随着气象信息现代化的发展,气象资料种类不断的增加及气象资料传输时效要求的提高,在已有气象传输系统发生故障时,为了满足时效性要求需要一种轻量级的资料传输工具代替并恢复气象业务,本文介绍了基于Python语言的气象资料传输工具的设计,为气象资料传输系统故障时提供必要的应急方法。

1 传输工具的设计框架

气象资料的产生方式为部署在县级或市级气象局观测场内部的气象观测仪器采集天气信息,采集温度、气压、湿度、风速、风向、太阳辐射等,数据通过串口形式接收在气象观测台站服务器中,通过气象专用ISOS软件生成对应文件格式的文件,其中自动站、酸雨文件格式以文本格式为主,高空等文件具有其特定的文件格式。

市级、县级气象观测观测台站通过气象宽带网络将气象资料发送至省级气象局,省级气象局对收到的报文进行格式检查后发送到下一级目的主机,本设计部署位置在省级气象局的互联网DMZ区,作为与气象内网与互联网单向通信的服务器,其目的是作为主要气象资料传输系统的备用方案,在市级、县级气象专网发生故障时,以互联网为渠道,接收互联网特定端口的报文信息,保障气象资料的顺利传输以及资料传输的时效性。

本设计将FTP的落地的文件经过处理后发送到国家气象信息中心服务器中保存、共享,处理过程主要包含资料分类及打包功能、实时传输功能、日志功能、程序守护功能。资料分类、打包功能通过匹配报文文件的名称实现资料文件的分类,打包功能主要是对气象资料内容进行打包操作,实时传输功能将气象文件通过FTP方式按照不同入口目录发送到国家气象信息中心的服务上,期间程序运行及发送报文产生的信息将通过日志功能记录,以便后续运维人员的查看和资料的补调,程序守护功能主要作用是在程序的运行过程中保障程序主要进程的正常运行,防止掉线进程影响业务。具体传输流程如图1。

图1:气象资料传输流程图

1.1 资料分类及打包功能设计

根据气象资料传输要求,主要分为地面气象资料、高空气象资料、大气成分资料、酸雨资料、辐射资料、雷达资料、精细化预报产品等几大类资料,针对以上大类资料,程序设计中分别编写的不同文件类型的入口目录,针对大类资料下面的小类资料采用子目录级别设计了小类资料的入口目录。互联网接收的资料通过名称的特征匹配,将结果分配到不同类资料的存放文件夹,其中小类资料通过第二次资料分类后放至小类资料文件夹中。整个资料分类需要的模板名称存储在指定的配置文件中,软件提供有UI界面功能,如要调整文件名模板的格式及打包方式可以通过软件界面及修改后台配置文件实现,修改配置后无需重启软件即可完成配置的调整。

本设计中资料入口目录收集来自气象台站上传的文件,经过分类后,对文件内容进行打包处理,地面类型包含txt类型的文件采用内容打包方式,将文件内容重新遍历至文本内完成打包,其中重新打包后的文件名称按照中国气象局资料打包要求,报文名称中原站号名称更换为省级名称,时间格式更改为打包之后的国际时,时间要求精确到秒级。针对高空气象资料、酸雨资料特殊格式文件的打包方法,按照中国气象局对特殊气象资料文件规则的要求进行打包,与常规打包方式不同的,特殊格式报文打包过程中需要加入特殊分隔符进行站点区分。

1.2 实时传输功能设计

基于气象资料传输渠道多种多样,传输过程中每时每秒都会有新的文件落到服务器中,在程序编辑中,需要定时对其中文件进行处理,防止资料文件增多导致处理效率变慢,引用了Pyhton资源库中time函数编写定时器模块,以此实现定时监测功能,利用文件扫描函数监测入口目录下是否有资料保存,统计文件数量,若有未发送的文件,程序将文件名放入待发送文件队列,启动文件传输进程,使用FTP方式将文件发送到指定目录,如果在扫描文件过程中发现非气象资料的文件或者可以病毒文件,程序对未知文件启动删除程序,完成对资料入口目录的清理。

图2:实时传输流程图

程序提供了分发目的配置功能,业务运行人员可以在过程中对不同资料配置不同的目的主机,实现自定义文件转发功能,在资料保存后的共享业务中,需要对多个目的主机提供资料共享服务。传输过程中,为了防止发送到目的文件夹的过程中目标服务器对没有发送完成的报文进行操作,程序设计中在发送报文时对名称的后缀名进行更改,待文件发送完成时将名称替换为正常格式,保障传输报文的完整性。为了防止同名气象资料重复传输,影响资料中数据的准确性,设计中加入监视器,监测目标文件夹下面的文件是否与待发送文件名相同,发现相同则删除该文件。具体流程如图2。

1.3 日志功能设计

气象资料在采集中产生的传输日志有很大的参考价值,在传输流程中如果某一环节发生故障,可以通过传输日志发现故障所在位置及故障发生的时间,日志功能主要采集资料的文件名、收集时间及位置、发送时间及位置,在传输流程的每一个环节中将每类气象资料所经过的节点信息记录到日志中,程序设计中对每个程序代码块中设置了日志输出选项,在发生故障时抛出相应错误信息,日志文件在检索时在每行的开始提供日志信息的标枪,标明了输出日志属于正常传输日志或者故障抛出日志。日志文件每大于一定容量大小时将日志文件重定向到新的日志文件中,日志文件可连续存放一年的传输日志。对于已经发送的文件,日志功能保留了文件备份功能,将已传输的文件备份到本地备份目录下,便于协助日志文件相互核实业务传输情况。

1.4 程序守护功能设计

程序在后台运行中,通过进程名查询即可获得程序的进程端口号,对于不存在的进程即没有进程端口号的存在,利用这一点,在实时传输程序运行中,通过定时触发扫描器扫描后台进程端口号,确认后台的正常运行,通过此方法实现对后台程序的监控作用。守护程序的设计可以对传输的运行得到有力保障,也可以在程序所在服务器发生重启等故障后主动拉起主要应用,并且守护程序的运行过程会生成特定的日志,负责业务运维的人员通过此日志可以在后续的维护中修改程序出现的问题。

2 气象资料传输工具的应用

在资料传输的整个过程中,补充上传气象资料是传输过程中总会发生的情况,当气象台站到省级信息中心内网链路中断时,需要通过互联网方式发送气象资料,鉴于其中一部分气象资料属于国家保密信息,不可以通过公共渠道流通,需使用独自开发的传输工具完成这一过程。气象资料传输工具部署在气象专网区到互联网区的DMZ环境下,利用互联网DMZ区的网络策略实现其功能,在非内网传输过程中,气象资料由气象台站到国家气象信息中心传输时间为3分钟之内,完全符合气象传输过程中要求的时间区间。

省级气象部门在收集了大量气象数据之后,资料需要以共享文件方式提供到气象台、气象服务中心等产品制作单位进行进一步处理,整个过程中需要一个流转的过程,在气象业务发展的初期,主要通过人为定期复制资料到共享服务器中进行资料服务业务,这种行为无法保障业务的实时性,在时间的角度极大拖延了气象资料的传输周期,通过将传输工具配置特定的目的地址代替了人工操作的业务,避免了人为操作过程中的失误,为资料共享提供一个无人值守的便捷方式。

3 结束语

在云计算的发展下气象业务实现了集约化管理,从之前单独服务器提供业务服务到现在的云主机上运行墙业务,云主机灵活的操作性及快照备份的特性保障了气象业务在故障发生的情况下能够第一时间恢复业务的运行。大数据的发展使得现在气象数据对存储的要求越来越高,存储的数量级别由TB级增长到现在的PB级别,数据处理的任务量也在提高,在庞大的业务系统面前气象系统运维人员承担着守护气象业务正常运行的保障任务。随着信息时代的不断发展,伴随着大数据、人工智能的不断成熟,天气预报准确率已经可以达到80%以上,这使得各行各业都开始关注起气象信息,对气象信息的精准度要求也不断提高,超高的精准度需要气象算法软件不断升级,在此期间,对气象资料传输的时间效率要求也越来越高,为了在更短时间内顺利将气象资料由观测场到预报员桌面,保障天气预报的准确性,气象信息中心的运维人员对资料传输系统也在不断更新,为了提高预报准确率不断学习新的技术,开拓新的领域。

猜你喜欢
日志报文气象
基于J1939 协议多包报文的时序研究及应用
气象树
一名老党员的工作日志
《内蒙古气象》征稿简则
CTCS-2级报文数据管理需求分析和实现
扶贫日志
浅析反驳类报文要点
大国气象
美丽的气象奇观
游学日志