网站首页
教育杂志
CSSCI期刊 北大期刊 CSCD期刊 统计源期刊 知网收录期刊 维普收录期刊 万方收录期刊 SCI期刊(美)
医学杂志
CSSCI期刊 北大期刊 CSCD期刊 统计源期刊 知网收录期刊 维普收录期刊 万方收录期刊 SCI期刊(美)
经济杂志
CSSCI期刊 北大期刊 CSCD期刊 统计源期刊 知网收录期刊 维普收录期刊 万方收录期刊 SCI期刊(美)
金融杂志
CSSCI期刊 北大期刊 CSCD期刊 统计源期刊 知网收录期刊 维普收录期刊 万方收录期刊 SCI期刊(美)
管理杂志
CSSCI期刊 北大期刊 CSCD期刊 统计源期刊 知网收录期刊 维普收录期刊 万方收录期刊 SCI期刊(美)
科技杂志
CSSCI期刊 北大期刊 CSCD期刊 统计源期刊 知网收录期刊 维普收录期刊 万方收录期刊 SCI期刊(美)
工业杂志
CSSCI期刊 北大期刊 CSCD期刊 统计源期刊 知网收录期刊 维普收录期刊 万方收录期刊 SCI期刊(美)
SCI杂志
中科院1区 中科院2区 中科院3区 中科院4区
全部期刊
公务员期刊网 论文中心 正文

气象业务网文件管理子系统设计浅析

前言:想要写出一篇引人入胜的文章?我们特意为您整理了气象业务网文件管理子系统设计浅析范文,希望能给你带来灵感和参考,敬请阅读。

气象业务网文件管理子系统设计浅析

摘要:针对原广东省气象业务文件管理中存在的功能分散、与页面耦合度太高等问题,设计了独立的文件管理子系统。该系统采用微服务架构、Solr搜索引擎、RabbitMQ消息中间件、Quartz调度管理等技术方案,集中解决了文件资源的同步存储、全文搜索、数据转换、监控告警、备份清理等功能需求。应用结果表明,文件管理子系统保障了业务网文件资料的完整性和及时性,提升了文件搜索服务能力,提高了业务管理效率。

关键词:气象业务网;文件管理子系统;广东省

随着气象现代化要求日益增高[1],广东省气象局于2019年开始建设新业务网,针对原业务网的文件处理功能不集中,文件管理与业务网页面显示耦合度太高的问题[2],新业务网建设采用开发文件管理子系统的思路。当前,文件类气象资料的处理多为功能单一的软件系统,例如对气象数据的全链路监控[3]、针对CTS文件传输的可视化监控[4]、对观测类数据的调度传输[5]、气象资料检索[6]、气象资料备份[7-8]等等,这些功能单一的系统,无法满足新业务网的需求,且各个系统之间信息无法共享。综合式的文件管理方案,有利于业务网功能扩展以及降低系统耦合度。新一期的业务网建设对数据安全提出了更高的要求[9],独立的文件管理系统更有利于安全功能的扩展。广东省气象业务网文件管理子系统(以下简称系统),要求在可能出现的单点故障和维护状态下,保证业务能够不间断运行及保证数据的一致性和完整性[10]。同时系统设计采用微服务架构[11-12],实现动态可扩展性。

1系统设计与实现

1.1系统模块设计

系统的基础功能可分为3个大模块:文件调度模块、文件搜索模块和文件监控模块。其中,3个模块通过日志相互关联。1)文件调度模块。该模块实现了文件的迁移、清理、转换、改名、备份等功能。支持不同协议、不同节律、不同字符集的传输;系统实现了多种文件读取的过滤、文件写入的后处理、对Office文档的转换功能。具体功能详见表1。2)文件搜索模块。该模块是基于Solr的搜索引擎实现。Solr是基于Lucene的全文搜索服务器,支持中文分词算法。匹配度根据文件名命中数、文件内容命中数、文件时间不同权重计算匹配度,最后根据匹配相关的排序显示。显示词条包含文件的文件名、文件实体地址、源地址、目标地址等信息。3)文件监控模块。该模块实现了对数据流程的监控管理,应用数据血缘关系形成数据链路图来描述数据流程,通过配置每个节点的监控,实现整个数据流程的监控,每个监控节点定义了不同告警级别、不同类型(文件、连接、服务)、不同节律的监控,并通过数据接口发送到值班辅助平台。另外,系统接口服务模块支持http的get与post两种方式请求,为了保证系统数据访问安全,访问系统接口通常需要3个步骤:访问认证接口;根据时间戳、系统编码、密码等信息生成认证;获取认证信息后,则数据访问接口附带认证信息,获取接口数据。对于以往开放式的数据服务,数据安全性有较大提升。其他功能包含公共信息的管理,如连接协议管理、系统监控管理、日志的维护模块、消息提醒模块、资料类型相关子系统的关联配置等。系统功能划分见图1。

1.2系统逻辑架构设计

为了充分满足系统在高可用、易扩展等方面的要求,采用SpringCloud微服务架构。根据不同的方法划分成相应的微服务,各服务之间彼此独立,也可以根据业务需求进行服务调用。逻辑层级上系统分为3层结构:交互层、服务层、数据层。系统以Tomcat为web服务器,Tomcat响应用户请求,访问微服务集群;而传输产生的日志、搜索的索引等其他相关的日志,通过Solr日志索引库存储。Oracle则提供了基本元数据的持久化存储,例如配置信息等等。通过Redis作为数据缓存,减少了数据查询的压力。系统逻辑架构如图2所示。

1.3系统部署实现

通过测试发现,系统运行压力主要存在于文件处理服务的IO压力以及线程数量的不足,所以部署多台文件处理服务器和一台接口服务器。因系统用户数有限,Oracle、Redis服务压力小,部署同一服务器。Solr提供日志服务与搜索服务,单独部署一台服务器。消息中间件与其他系统共用现有消息中间件服务器(图3)。

2关键技术

2.1基于Quartz的任务调度算法

系统的调度任务分配是基于Quartz框架完成,核心元素是调度器scheduler,并由触发器trigger和任务job两个元素构成。trigger是用于定义调度时间的元素,例如定时执行、按日历执行、单次执行等;job用于表示被调度的具体作业内容。概括性的描述,通过轮询scheduler列表,完成了任务的调度,具体如图4所示。

2.2文件同步清单生成算法

文件同步是一项耗费IO资源的功能,为防止频繁的扫描和重复同步,对哪些文件同步的判断十分关键。该系统采用的是日志比对的方式,对源目录扫描文件集A和已同步文件集合B进行比对,判断出是否需要同步,其具体方法是:A和B交集代表已经传输的日志,避免再次传输;A补集代表新增的文件,新增的文件清单,发送到消息队列处理;B的补集代表已过期的日志,为了减少日志查询压力避免日志累积,可以删除过期日志,具体同步清单生成如图5所示。

2.3任务异步执行管理

为了避免多个任务线程对资源的抢占,本系统由RabbitMQ消息中间件实现任务的异步执行,对应每个任务,QuartZ生成任务调度器,执行调度清单生成算法,生成的调度清单打包成JSON消息集发送到RabbitMQ。当队列监听线程发现有消息时,通过消费者获取消息,解析JSON信息,获取完整的任务信息,完成任务的执行(图6)。该机制有以下几个优点。(1)调度线程不会受到任务实际执行情况影响,当完成消息写入时,调度器的线程就结束。(2)如果执行异常,将异常消息写入日志,任务json重新写入队列,并附加已传输的次数,实现文件有限次数的重传。(3)执行线程设置了超时中断,当任务阻塞时,线程超时,中断线程回收资源,任务json重新写入队列。(4)消息中间件作为任务执行的缓存器,只有一个监听线程,配置有限个消费者,避免了大量任务同时执行造成的IO压力。

2.4字符集转换算法

由于文件管理的数据源于不同用户的文件上传,系统无法控制用户上传的中文文件名字符集,如果不对中文文件名有效的处理,则会出现文件名乱码的情况,严重的将会影响到文件的读取,字符转换算法的核心是:(1)正确匹配源文件的字符集读取文件,此处可以根据用户设定的字符集或者用JCharDet算法识别,JCharDet是基于统计概率的识别方法,通过计算字符集转换后字符出现的概率,判断是否乱码、识别出字符集。(2)负责转换的服务器操作系统字符集为最为完备的字符集,编码范围至少包含了源与目标目录的字符集,该系统设定为utf-8,以免在字符集转换的过程中发生了信息丢失。(3)将正确读取的文本以目标目录字符集写入到目标目录。

3试运行

系统为业务网提供了完备的文件处理服务。随着新业务网建设周期,不断的优化建设系统。通过统计2021年8月到10月的运行,日均同步文件数量144264个,总计大小23GB、搜索接口访问231次。在千兆网络带宽、64核CPU、64g内存、ssd存储的配置条件下,对系统的最大负载做了测试,分析了系统的文件处理、接口服务的最大负载能力,系统运行在最大负载的情况下,仍能够稳定运行。通过与原业务网分散的文件处理功能对比,系统最大负载能力如表2所示。在管理效率上,通过系统的监控模块实现自我监控,监控消息通过服务接口对接值班辅助理平台,纳入了值班监控;与原系统相比,通过分析值班员人工记录的日志。对文件故障的发现时间减少了约33%;系统的文件接口,增加了信息认证,文件的同步,不依赖第三方软件,有效的提升了安全性;集约的文件处理功能,实现了原业务网3个系统功能,减少了运维的工作量,优化了业务管理。系统还弥补了原业务网系统中中文字符集转换、全文搜索等缺失的功能,解决了业务上的需求。

作者:黄伟 阮惠华 李泽杰 黄宇宸 陈逸智 单位:广东省气象探测数据中心

免责声明

本站为第三方开放式学习交流平台,所有内容均为用户上传,仅供参考,不代表本站立场。若内容不实请联系在线客服删除,服务时间:8:00~21:00。

AI写作,高效原创

在线指导,快速准确,满意为止

立即体验
文秘服务 AI帮写作 润色服务 论文发表