海洋观测数据传输系统的设计与实现
2023-01-31熊金莲郭艺峰陈艳云王晓瑞吴文婷
熊金莲 刘 丰 郭艺峰 陈艳云 王晓瑞 吴文婷 芮 龙
1(国家海洋信息中心 天津 300171) 2(杭州蓝昌科技有限公司 浙江 杭州 310007) 3(中国地质大学(武汉)计算机学院 湖北 武汉 430074)
0 引 言
原有的海洋观测数据传输由东海、南海和北海三个海区各个海洋站向所属的各中心站传输,各中心站向各自所属的海区预报中心传输。三个海区预报中心分别向国家海洋预报中心和各海区所属的海区信息中心传输,三个海区信息中心同时再向国家海洋信息中心传输。近年来,按照自然资源部海洋信息化整合的要求,海洋观测数据传输业务流程相应作出调整。现要求海洋观测数据传输由东海、南海和北海三个海区各个海洋站向所属的各中心站传输,各中心站向各自所属的海区信息中心传输。三个海区信息中心分别向各自所属的海区预报中心和国家海洋信息中心传输,国家海洋信息中心再向国家海洋预报中心传输。
海洋观测数据传输业务流程变更后,原有的传输软件已不能完全满足数据传输时效性和吞吐量明显提高的要求。
为更好地了解不断变化的海洋状态,需要对观测数据进行实时处理以及高速实时的传输[1],特别是部分监测装备获得的重要数据信息需要实时传回处理等实时性要求高的应用场景[2-3]。目前全国海洋观测数据庞大,考虑信息的及时性和稳定性,能够快速地提交、存储、处理、发送数据,减少信息滞留,提高数据传输的实时性尤为重要[4-5]。为满足海洋观测数据传输的实时性要求,在数据传输时效性方面,如进行分钟数据的传输,新的传输流程要求定时完成全部节点的传输,对各中间节点的数据实时接收、实时存储、实时转发性能提出了更高的要求。原有的轮询模式与FTP传输协议会在本级节点产生较大延迟,导致整个传输流程形成无法接受的延迟。
在数据传输吞吐量方面,新的传输流程不再分布处理数据文件,要求核心节点统一处理全部数据文件。随着海洋站数量以及观测要素的增加,为应对未来的业务发展,海洋观测数据传输软件需要更高的数据吞吐量和性能余量。
同时,由于原来使用的海洋观测数据传输软件技术体制不完全一样,不同节点间只能通过数据文件进行交互。若采用文件方式进行数据传输交换[6],则无法进行统一的指令发布和软件管理。另外,不同技术手段对软硬件环境的需求不完全一致,如Remoting方式只能应用在Windows XP以下版本,部分软件采用与数据库直连的机制,不方便大量部署,给海洋信息化整合带来不利影响。
为了满足海洋信息化整合要求,进一步统一全国海洋数据传输管理,促进我国海洋事业的发展,研制了海洋观测数据传输系统。该系统提高了全国海洋数据传输的运行管理效率,对于提高海洋观测预报和海洋灾害预警能力具有重要意义。
1 系统设计
1.1 设计目标
海洋观测数据传输系统的设计目标是实现全国海洋观测数据的分级实时发现与传输,提供毫秒级的本地数据文件的发现能力,并传输所有以文件形式存储的数据。同时,该系统应具备可靠性和可扩展性,在国家级、海区级、中心站级和海洋站级节点上,海洋观测数据传输系统应满足24小时运行要求,并支持新增节点的快速联网部署。
1.2 功能指标
(1) 系统功能。海洋观测数据传输系统应该具备的系统功能如下:① 具备数据文件的主动发现能力,包括本级节点产生的数据文件和其他节点传输过来的数据文件;② 检验数据文件的写入完成状态,进行提取并按通信接口实现定向传输;③ 校验传输的准确性,判断是否传输成功;④ 具备待传数据的缓存能力,以应对网络故障;⑤ 按照业务需求,实现数据文件的规范化存储;⑥ 具备日志记录功能,记录系统运行状态、数据传输状态以及网络故障等信息。
(2) 性能指标。海洋观测数据传输系统应该具备的性能指标如下:① 满足24小时不间断运行的需求;② 数据传输到报率高于98%;③ 文件发现时间低于100毫秒;④ 系统年均故障次数低于4次;⑤ 具备数据传输的并发能力,同时发送或接收的节点数均不低于5个;⑥ 能够全网部署,分级接力运行。
1.3 系统结构
海洋观测数据传输系统结构主要包含主界面功能模块、任务管理模块、接收模块和文件发现模块四大功能模块,其系统结构设计图如图1所示。
图1 海洋观测数据传输系统结构总设计图
1.4 功能模块
(1) 主界面模块。主界面模块包括任务管理界面、文件接收与发送状态界面和其他功能设置界面。用户可以通过主界面进行系统运行参数的设置、传输任务管理设置等,并且可以查看传输状态、链路状态和文件接收状态等信息。
任务管理界面主要包含数据接收设置、传输任务管理、传输站点管理、管理员登录以及退出系统等功能菜单。数据接收设置包括端口设置,开机自启动设置以及文件存储目录设置等。开机自启动选项主要是为了应对全国各海洋站、中心站、海区信息中心、海区预报中心等可能出现的机器断电重启后传输软件无法自启动,导致的数据传输中断、数据大量积压等故障。传输站点管理主要是用于对远程服务器的管理及传输配置,该功能主要开放给具有管理权限的管理员登录使用。传输任务管理模块的功能后文会详细介绍。
文件接收模块主要包含文件接收状态和接收链路状态两部分。其中文件接收状态部分显示当前接收文件列表,包括接收时间、类型、站点名称、来源地址、文件类型、文件名、存储目录及状态等信息。对于文件接收异常的情形,则会单独显示在文件接收异常状态栏。接收链路状态部分则显示类型、站点名称、地址、端口、连接数、接收文件数及最后活动时间等信息。
发送任务模块主要包含文件发送状态和传输链路状态两部分。其中文件发送状态显示当前已发送文件列表,包括时间、名称、传输类型、目标地址、文件名、状态等信息。传输链路状态则显示当前传输文件的链路,包括名称、传输类型、目标地址、端口、链路、连接数、待传文件、已传文件、状态等信息。
(2) 传输任务管理模块。传输任务管理主要包括任务模块界面和任务通道线程两部分。在传输任务模块界面中,用户可以建立多个传输任务,各个任务可独立运行。根据用户配置,任务通道线程自动生成多个独立运行的线程,在此线程下生成文件传输模块。为了利于以后海洋观测数据传输方式的扩展,数据文件传输模块的代码是独立的。根据缓存文件的数量,数据文件传输模块自动生成多个传输线程同时传输,用户可以通过配置文件设置该模块同时传输的线程上限。由于该模块可根据缓存文件数量自动生成多个线程同时传输,达到以最快速度上传文件的目的,防止了大量文件的积压。当无文件上传时,数据文件传输模块会自动释放线程,节省了系统资源。
传输任务模块界面包含任务列表和任务设置两部分。任务列表包括任务序号和任务名称信息,点击增加按钮,可以增加新的传输任务,选中想要删除的任务,点击删除按钮即可删除该任务。具体的任务设置包括数据源目录设置、传输规则设置、传输目的地设置和传输链路设置四个步骤。
数据源目录设置模块可以选择需要传输的文件目录,同时可以设置数据类型,选择数据是否按规则整理目录等。点击保存按钮,保存所设置的信息,点击新增按钮,新增一条数据源目录。这里可设置一个或多个传输源目录,同时也可选择当前传输目录进行修改后保存或直接删除。
传输规则设置模块主要包括上传目录选择和文件黑白名单过滤两部分,分别用于过滤部分文件夹或者文件。
传输目的地设置模块可以设置名称、传输类型、是否保持目录结构、目标地址、端口号以及传输目的地目录等信息,该模块可以新增或删除一条或多条目的地目录记录信息。
传输链路设置模块应用在多路数据传输的情况下,兼容有线、无线等多条线路进行数据传输。可以设置线路的优先级别、名称、IP地址以及网关等信息,也可以新增或删除传输链路。该传输软件根据链路的优先级别自动选择传输链路,当高优先级的链路断开后则自动切换至次一级的链路继续传输,当断开的高优先级传输链路恢复正常时,软件自动切换至此链路。
(3) 接收模块。接收模块接收的类型包括文件、消息、状态和参数等。该模块采用独立线程的接收模式,当终端连接建立时,系统自动加载线程模块,等待数据接收。再根据协议判断数据类型并分别进入处理过程,当接收成功时,向终端返回成功消息。
(4) 文件发现模块。文件发现模块为独立的线程模块,该模块获取新文件的方式有自动间隔时间查询和系统消息获取两种。当获取到新文件时,将新文件分配到传输缓存,判断是否保持源目录结构。若保持源目录结构则须获取相对应的目录结构,然后在服务器端生成,接着判断是否符合传输匹配规则,最后移动文件至发送缓存。
2 主要功能与技术路线
2.1 主要功能
海洋观测数据传输系统主要包括传输业务管理、文件发现、规范化存储、文件发送与接收和状态采集等功能。其中,传输业务管理主要功能是在管理其他各模块运行的同时,读取本地节点的传输任务信息以完成对应的传输业务。文件发现主要功能是实时监控本地存储,获取本地数据文件的更新消息,检测文件传输情况以及提取相关信息。规范化存储的主要功能是识别接收的数据文件,按照相关技术规程或者配置信息进行规范化的本地存储。文件发送与接收的功能主要是完成各节点间可靠的点对点的数据文件的传输[7-8]以及节点间控制消息的传递。状态采集的功能主要是收集文件传输过程的状态信息,增加时间戳,形成传输状态记录信息,上传到对应的管理节点。海洋观测数据传输系统内部功能逻辑设计如图2所示。
图2 海洋观测数据传输功能逻辑设计图
2.2 技术路线
(1) 传输业务管理功能技术路线。传输业务管理功能是海洋观测数据传输系统的核心框架部分。它采用消息机制进行传输业务流程管理,管理着该传输系统其他各个模块的运行,并根据各个模块相对应的运行事件消息进行相应的启动与终止操作,并为其传递消息。为了描述全部数据传输的业务,如本节点需将何种类型数据文件传输给哪个节点,这就需要采用自定义的数据结构来定义任务模型。配置文件管理部分则主要管理本地的配置文件,在该传输系统启动时读取本地配置文件信息并形成相应的任务模型,当接收到新的调度指令时则按照新的任务模型更新本地配置文件信息。
(2) 文件发现功能技术路线。文件发现部分主要通过监听操作系统文件的变动消息,进而实现对本地磁盘文件进行实时监控。在高频次海洋观测数据文件生成的情况下,为了保证不丢失监控信息,该传输系统采用完成端口机制[9-12],绑定操作系统的消息至完成端口;为了避免读取到“脏数据”,文件发现部分在监听到传输文件的变动消息后,会进一步监控该文件的写入完成状态,以保证不读取“脏数据”。然后文件信息提取功能部分会对相应消息进行解码,提取变动文件的文件名、所在路径、变动类型以及变动时间等信息。消息过滤功能则通过匹配提取到的文件信息和本地任务模型,进而过滤出需要处理的文件,最后以消息形式通知传输业务管理模块进行处理。
(3) 规范化存储功能技术路线。本节点在接收到来自其他节点传输的数据文件后,规范化存储功能部分则根据任务模型识别该文件,并形成相应的本地存储路径。以海洋观测数据为例,按照《海洋观测资料传输技术规程》的要求,海洋站分钟数据规范化存储形式为…/ZZZ/SSS/realtime/YYYY/MM/DD/HH/,海洋站整点数据规范化存储形式为…/ZZZ/SSS/perclock/YYYY/MM/DD/,海洋站正点数据规范化存储形式为…/ZZZ/SSS/punctual/YYYY/MM/DD/。其中ZZZ代表三位中心站代码,SSS代表三位海洋站代码,中心站和海洋站代码根据HY/T023设置。YYYY则表示数据生成的年份,MM表示数据生成的月份,DD表示数据生成的日期,HH表示数据生成在哪一小时。当时间代码不足两位数时,则一律在前一位用0补齐。
由于本海洋观测数据传输系统采用多线程处理技术,同一时刻不同来源的数据文件在写入时可能出现文件夹生成冲突,因此需要存储管理将并行来源的数据文件写入操作串行化后执行。
(4) 文件发送与接收功能技术路线。文件发送与接收功能部分采用多线程的socket通信[13-16]模式,通过链路管理部分管理多个数据发送与接收线程。一旦系统启动,端口监听线程即刻开启,等待其他节点的接入。由于本系统采用完成端口机制管理线程,当有节点接入时,链路管理将空闲的数据接收线程与之绑定,并启动数据接收;当有数据发送时,链路管理启动空闲的数据发送线程,连接远程的数据接收节点。从而达到最大化利用硬件资源的目的,并且避免了软件空转引起的“假死”现象。通过自定义数据传输协议[17],依据链路条件将数据文件或调度指令封装成特定格式的数据包并进行分包、分组,发送方按照接收方IP和对应端口,依序集中发送数据包和反馈重传包,接收方解析并反馈重传统计结果,直到接收完成,从而提高传输的准确性和传输效率。当系统启动后,即刻创建数据发送和数据接收队列,支持按照数据或指令的优先级进行队列管理,从而实现有序的文件传输。文件发送与接收设计如图3所示。
图3 文件发送与接收设计图
(5) 状态采集功能技术路线。状态采集功能部分采集传输过程中由其他模块在运行中同步获取的文件属性、关联的传输任务及传输操作结果等状态信息。通过调用操作系统时间,时间戳处理为数据文件生成、接收及发送的时间生成时间戳,再由状态记录生成部分按消息-时间格式形成状态记录。
3 系统实现与部署运行
海洋观测数据传输系统已经开发完成,并且在国家海洋信息中心、东海海区信息中心、东海7个中心站以及东海71个海洋站部署并正常业务化运行。下一步将继续推广部署到南海海区信息中心、北海海区信息中心、南海各个中心站、北海各个中心站、南海各个海洋站以及北海各个海洋站。海洋观测数据传输业务流程如图4所示,以东海信息中心为例,东海各海洋站将数据传输至其对应的中心站,各中心站将数据传输至东海信息中心,东海信息中心再将数据同时传至国家海洋信息中心和东海预报中心。
图4 海洋观测数据传输业务流程
海洋观测数据传输系统在各信息中心、中心站及海洋站部署时,需先设置端口、文件存储目录以及是否开机自启动等数据接收设置信息。各信息中心、中心站及海洋站向外发送数据时,须设置发送任务的数据目录、传输规则、传输目的地以及传输链路等信息。以东海信息中心为例,其接收端口应与下级节点东海各中心站的发送端口一致,其发送端口应与上级节点国家海洋信息中心、东海预报中心的接收端口一致。配置完成后,海洋观测数据传输系统运行界面如图5所示。
此外,海洋观测数据传输系统用户还可以通过该系统的传输站点管理模块对下一级节点进行远程配置管理。例如在东海信息中心这一节点上,可以通过该系统对东海各中心站进行配置操作。如增加站点、删除站点,或选中某站点记录,点击右键选择远程传输任务管理,进入与该IP地址对应的远程服务器的传输任务管理界面,进行远程配置操作。设置完成后,远端的传输会立即生效,终端系统将根据用户所设置的参数运行。
4 结 语
本文依据海洋观测数据传输业务流程变更特点以及新的业务需求,设计开发了一套海洋观测数据传输系统。经过反复测试,该海洋观测数据传输系统满足相应的系统功能和性能指标。目前,该系统已经部署到东海海区各中心站、各海洋站,进入稳定可靠的业务化运行阶段。后期会将该系统继续部署到南海海区以及北海海区各中心站以及各海洋站,实现全国海洋观测数据传输技术的统一和规范化,提升我国海洋观测数据传输的运行管理效率。