一种用于采集自动气象站数据的系统及方法与流程

文档序号:12733329阅读:378来源:国知局
一种用于采集自动气象站数据的系统及方法与流程

本发明涉及气象科学和大数据技术应用领域,具体涉及一种用于采集自动气象站数据的系统及方法。



背景技术:

目前气象部门在自动气象站数据采集方面主要是通过在各个项目中编写程序直接向自动气象站数据接口请求数据并写入数据库。由于自动气象站数量庞大,所有的站点数据在整点同时更新,数据写入和读取请求均在整点达到峰值,造成整点时数据库负担增加,访问缓慢。目前的解决方案是通过在数据库硬件资源上分配更多的CPU和内存来应对高峰;另外,由于数据请求与入库由同一个程序完成,对于经常出现的程序异常停止的状况,只能通过人工分析采集程序日志采集了解中断发生的时间,在合适的时候运行数据补录程序来补入程序异常时漏掉的数据;同时国内在自动气象站数据采集方面并没有形成一个可以完成海量自动站数据采集的专有系统,自动气象站数据采集工作仅仅作为彼此独立项目开发的附属任务,在项目开发过程中由不同厂家,使用不同技术手段,反复临时开发实现。

从现有技术方案分析来看,整体存在以下缺陷:1.该方案将自动气象站数据的请求和入库放在同一个模块中完成,导致采集程序与数据库厂商高度耦合,在遇到其他厂商数据库时无法移植;2.在某些情况下,请求数据或数据入库的过程中会发生异常,该方案未对数据进行持久化处理,会造成数据丢失,对于丢失的数据只能人工干预补入数据;3.该方案直接将整点的峰值压力转嫁给数据库,逼迫数据库以峰值访问量配置资源,造成资源浪费;4.采集程序在不同项目中被反复开发,但都仅限于临时解决项目中遇到的一两种自动气象站数据格式的解析入库,并没有对自动气象站数据本身做很好的支持。



技术实现要素:

本发明所要解决的技术问题是提供一种用于采集自动气象站数据的系统及方法,可以实现不同厂商的移植、减少人工干预、节约资源和避免程序被反复开发。

本发明解决上述技术问题的技术方案如下:一种用于采集自动气象站数据的系统,包括消息生产模块、消息队列模块和消息消费模块,所述消息生产模块与所述消息消费模块之间是相互独立的,且所述消息生产模块中设有与不同的自动气象站相连的兼容接口,所述消息消费模块中配置有与不同的自动气象站相匹配的数据解析类和数据仓库类;

所述消息生产模块,其用于采用消息队列持久化技术通过兼容接口向不同的自动气象站请求相应的自动气象站数据,并将请求到的自动气象站数据发送给所述消息列队模块;

所述消息队列模块,其用于将所述消息生产模块发送过来的自动气象站数据进行存储并以消息队列的方式进行异步传输;

所述消息消费模块,其用于接收所述消息队列模块异步传输过来的自动气象站数据,并通过数据解析类和数据仓库类对获取的自动气象站数据进行解析后写入到数据库中。

本发明的有益效果是:本发明一种用于采集自动气象站数据的系统针对自动站数据的采集工作构建了专有系统,支持了更多种自动站数据格式,增加对不同数据库厂商的兼容,并对采集来的数据做了持久化处理,降低了数据丢失的风险,减少了数据采集过程的人工干预,并对整点峰值压力做了缓冲,使得使用更低配置的数据库也能平稳应对整点峰值。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述消息队列模块具体为Kafka、ActiveMQ和RabbitMQ中的任一个。

采用上述进一步方案的有益效果是:本发明的系统默认使用Kafka作为消息队列中间件,原因是Kafka是一种分布式的消息系统,提供了消息持久化能力,对TB级以上数据也能保证常数时间复杂度的访问性能;而且它吞吐率高,即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输,可以让RCollector在海量自动气象站数据采集场景下出色工作。同时本发明的系统也能使用ActiveMQ、RabbitMQ等其他支持持久化的消息队列来完成工作,选择哪种消息队列可以视数据量级和开发团队的熟悉的技术栈而定。

进一步,所述消息生产模块采用消息队列持久化技术具体为,所述消息生产模块配置有数据采集日志,所述数据采集日志用于记录当发生网络异常时所述消息生产模块请求和/或发送失败的异常节点数据,且所述消息生产模块在网络恢复后自动的对所述数据采集日志记录的异常节点数据进行重新请求和/或发送。

采用上述进一步方案的有益效果是:通过维护消息消费模块中的数据采集日志,和采用消息队列持久化技术对消息在传输过程中进行持久化,降低了程序异常引起的数据丢失,减少了人工干预。

进一步,所述消息生产模块包括省级自动气象站Z文件数据采集器,所述省级自动气象站Z文件数据采集器通过监听省级自动气象站Z文件数据的FTP目录变化,获取实时被添加和/或修改到FTP目录中的文件,匹配获取到的实时被添加和/或修改到FTP目录中的文件的文件名,并读取实时被添加和/或修改到FTP目录中的文件的内容,且以省级自动气象站Z文件数据为消息主题将实时被添加和/或修改到FTP目录中的文件的内容转发至消息队列模块。

进一步,所述省级自动气象站Z文件数据采集器配置有Z文件数据采集日志,所述Z文件数据采集日志用于记录当发生网络异常时所述省级自动气象站Z文件数据采集器请求和/或发送失败的异常节点数据,且所述消息生产模块在网络恢复后自动的对所述Z文件数据采集日志记录的异常节点数据进行重新请求和/或发送。

进一步,所述消息生产模块包括全国综合气象信息共享平台数据采集器,所述全国综合气象信息共享平台数据采集器通过定时向全国综合气象信息共享平台发送请求来不断地读取实时的全国综合气象信息数据,并以全国综合气象信息共享平台数据为消息主题将读取到的实时的全国综合气象信息数据转发给消息队列模块。

进一步,所述全国综合气象信息共享平台数据采集器配置有全国综合气象信息数据采集日志,所述全国综合气象信息数据采集日志用于记录当发生网络异常时所述全国综合气象信息共享平台数据采集器请求和/或发送失败的异常节点数据,且所述消息生产模块在网络恢复后自动的对所述全国综合气象信息数据采集日志记录的异常节点数据进行重新请求和/或发送。

基于上述一种用于采集自动气象站数据的系统,本发明还提供一种用于采集自动气象站数据的方法。

一种用于采集自动气象站数据的方法,利用上述所述的一种用于采集自动气象站数据的系统进行采集,包括以下步骤,

S1,消息生产模块采用消息队列持久化技术通过兼容接口向不同自动气象站请求自动气象站数据,并将请求到的自动气象站数据发送给所述消息列队模块;

S2,消息队列模块将所述消息生产模块发送过来的自动气象站数据进行存储并以消息队列的方式进行异步传输;

S3,消息消费模块接收所述消息队列模块异步传输过来的自动气象站数据,并通过数据解析类和数据仓库类对获取的自动气象站数据进行解析后写入到数据库中。

本发明的有益效果是:本发明一种用于采集自动气象站数据的方法采用针对自动站数据的采集工作构建的专有系统,支持了更多种自动站数据格式,增加对不同数据库厂商的兼容,并对采集来的数据做了持久化处理,降低了数据丢失的风险,减少了数据采集过程的人工干预,并对整点峰值压力做了缓冲,使得使用更低配置的数据库也能平稳应对整点峰值。

附图说明

图1为本发明一种用于采集自动气象站数据的系统的结构框图;

图2为本发明一种用于采集自动气象站数据的方法的流程图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,一种用于采集自动气象站数据的系统,包括消息生产模块、消息队列模块和消息消费模块,所述消息生产模块与所述消息消费模块之间是相互独立的,且所述消息生产模块中设有与不同的自动气象站相连的兼容接口,所述消息消费模块中配置有与不同的自动气象站相匹配的数据解析类和数据仓库类;

所述消息生产模块,其用于采用消息队列持久化技术通过兼容接口向不同的自动气象站请求相应的自动气象站数据,并将请求到的自动气象站数据发送给所述消息列队模块;

所述消息队列模块,其用于将所述消息生产模块发送过来的自动气象站数据进行存储并以消息队列的方式进行异步传输;

所述消息消费模块,其用于接收所述消息队列模块异步传输过来的自动气象站数据,并通过数据解析类和数据仓库类对获取的自动气象站数据进行解析后写入到数据库中。

本发明一种用于采集自动气象站数据的系统(也称RCollector),具有如下特点:

(1)本发明的消息生产模块(也称RProducer)和消息消费模块(也称RConsumer)是两个相互独立的部分(可以认为是相互独立的两个应用程序),消息生产模块负责原始自动气象站数据的采集和消息的发送,消息消费模块负责消息的获取和自动气象站数据的解析和入库,通过生产和消费的区分完成了大的模块之前的解耦,避免程序在不同的项目中被反复开发,在遇到其他厂商数据库时可以得到移植。

(2)本发明采用持久化的数据采集技术,可以对数据进行持久化的处理,避免丢失的数据只能人工干预补入的麻烦,减少人工干预。

(3)本发明采用消息机制,消息队列模块(也称Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,消息队列模块提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,其中涉及发生的时间,输入设备的种类,以及特定的输入参数,也就是说消息的发送者(消息生产模块)和接收者(消息消费模块)不需要同时与消息队列互交,消息会保存在队列中,直到接收者取回它,即数据的传输过程以消息队列的方式异步传输,同直接发送数据到存储服务器端相比,它更加稳定,使用消息队列异步通信能够有效削峰,服务器压力只与消费者消费消息的频率有关,能够防止采集器在同一时间频繁请求对服务器造成过大压力。

(4)本发明为了能够更多地兼容不同的格式,在设计消息消费模块的类时,对自动气象站数据解析和存储进行了抽象,根据具体的站点类型来匹配具体的解析类和数据仓库类,这样做的好处是当需要兼容新的站点类型时,可以通过添加接口的实现来完成对新的站点类型的兼容,避免采集程序被反复开发。

在本具体实施例中,所述消息队列模块具体为Kafka、ActiveMQ和RabbitMQ中的任一个;Kafka、ActiveMQ和RabbitMQ均为支持持久化的消息队列。本发明的系统默认使用Kafka,原因是Kafka是一种分布式的消息系统,提供了消息持久化能力,对TB级以上数据也能保证常数时间复杂度的访问性能;而且它吞吐率高,即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输,可以让RCollector在海量自动气象站数据采集场景下出色工作。同时本发明的系统也能使用ActiveMQ、RabbitMQ等其他支持持久化的消息队列来完成工作,选择哪种消息队列可以视数据量级和开发团队的熟悉的技术栈而定。

为了适应不同格式的采集数据,消息生产模块在设计时要考虑扩展能力,模块化的处理是消息生产模块的设计理念,使得在遇到新的不同来源、不同格式数据时,公共模块相对固定。所述消息生产模块包括省级自动气象站Z文件数据采集器和全国综合气象信息共享平台数据采集器,当然还包括其他类型的数据采集器,本具体实施例并未列举穷尽,以下具体介绍省级自动气象站Z文件数据采集器和全国综合气象信息共享平台数据采集器。

原始数据采集作为消息生产模块的主要任务是:保证采集到的原始数据发送给消息队列模块。

省级自动气象站Z文件数据采集器(RProducer4Z)是针对自动气象站Z文件数据开发的自动气象站数据采集器的一个实例。在省级自动气象站的Z文件传输场景中,RProducer4Z通过监听省级自动气象站Z文件数据的FTP目录变化,获取实时被添加和/或修改到FTP目录中的文件,匹配获取到的实时被添加和/或修改到FTP目录中的文件的文件名,确保其为需要采集的自动气象站Z文件,读取文件内容,且以省级自动气象站Z文件数据为消息主题(topic_Z)将实时被添加和/或修改到FTP目录中的文件的内容转发至消息队列模块。RProducer4Z还配置有采集日志,具体为Z文件数据采集日志,所述Z文件数据采集日志用于记录当发生网络异常时所述省级自动气象站Z文件数据采集器请求和/或发送失败的异常节点数据,且所述消息生产模块在网络恢复后自动的对所述Z文件数据采集日志记录的异常节点数据进行重新请求和/或发送;也就是说当发生网络异常时,异常将被记录下来,等网络恢复后重新请求和/或发送失败的消息。

全国综合气象信息共享平台数据采集器(RProducer4Cimiss)是针对全国综合气象信息共享平台数据采集的另一个实例。通过定时向全国综合气象信息共享平台(Cimiss)发送请求来不断地读取实时的全国综合气象信息数据,并以全国综合气象信息共享平台数据为消息主题(topic_Cimiss)将读取到的实时的全国综合气象信息数据转发给消息队列模块。同样地,所述全国综合气象信息共享平台数据采集器还维护有一个全国综合气象信息数据采集日志,所述全国综合气象信息数据采集日志用于记录当发生网络异常时所述全国综合气象信息共享平台数据采集器请求和/或发送失败的异常节点数据,且所述消息生产模块在网络恢复后自动的对所述全国综合气象信息数据采集日志记录的异常节点数据进行重新请求和/或发送;也就是说当发生网络异常时,RProducer4Cimiss将异常记录到全国综合气象信息数据采集日志中,等网络恢复后重新请求和/或发送失败的消息。

数据解析入库作为消息消费模块的主要任务是:负责从消息队列模块中异步获取消息;将获取到的消息处理为自动气象站对象,将处理过的信息存储到数据库当中。

消息消费模块本质上是一个定时执行的应用程序,通过传入订阅主题,能够处理来自不同主题的消息,如果需要增加消息消费能力,可以通过同时启用多个RConsumer进程或配置其执行频率来达到目的。

目前现有技术中的自动气象站采集程序作为不同项目的附属程序被开发,对自动气象站数据格式的兼容十分有限,对自动气象站特有的整点高峰现象并没有做很好的处理,把压力全部交给数据库本身处理,并与特定厂商的数据库接口高度耦合;在实际开发过程中不得不反复造轮子,立一个项目就重新开发一个新的采集程序;由于缺乏持久化机制,在程序发生异常时会发生数据丢失,只能通过人工补录来补上缺失的数据。针对以上缺点,本发明为自动气象站数据采集构建了专有系统,并利用消息队列机制,完成了请求峰值的缓冲,降低了数据库配置要求,节约资源的同时提升了整点时的用户体验;通过消息持久化机制,和采集与入库模块的解耦,降低了发生异常时数据丢失的可能性,减少了自动气象站数据采集过程中的人工干预;并通过接口设计兼容了不同自动气象站数据格式,兼容不同数据库厂商,避免了用户在开发新项目时反复临时开发重复功能,节约了开发成本。

与现有技术相比,本发明的具体有益效果为:

1.本发明的系统对自动气象站数据的请求和解析入库进行了合理解耦,并通过接口设计对不同数据库厂商的自动气象站数据入库做了兼容,避免客户因为数据库的原因重新开发数据采集程序;

2.通过维护消费模块中的采集日志,和采用消息队列持久化技术对消息在传输过程中进行持久化,降低了程序异常引起的数据丢失,减少了人工干预;

3.通过消息队列做数据缓冲,使用使关键组件顶住突发的访问压力,让数据库不会因为突发的超负荷的写入请求而拖慢整个系统,让客户可以按日常访问量而不是峰值访问量来配置数据库资源;

4.自动气象站采集专有系统的构建,避免了采集程序在不同项目中被反复开发,对多种自动气象站数据格式的支持,让本方案可以直接被应用于不同从气象项目中。

基于上述一种用于采集自动气象站数据的系统,本发明还提供一种用于采集自动气象站数据的方法。

如图2所示,一种用于采集自动气象站数据的方法,利用上述所述的一种用于采集自动气象站数据的系统进行采集,包括以下步骤,

S1,消息生产模块采用消息队列持久化技术通过兼容接口向不同自动气象站请求自动气象站数据,并将请求到的自动气象站数据发送给所述消息列队模块;

S2,消息队列模块将所述消息生产模块发送过来的自动气象站数据进行存储并以消息队列的方式进行异步传输;

S3,消息消费模块接收所述消息队列模块异步传输过来的自动气象站数据,并通过数据解析类和数据仓库类对获取的自动气象站数据进行解析后写入到数据库中。

本发明一种用于采集自动气象站数据的方法采用了针对自动站数据的采集工作构建的专有系统,支持了更多种自动站数据格式,增加对不同数据库厂商的兼容,并对采集来的数据做了持久化处理,降低了数据丢失的风险,减少了数据采集过程的人工干预,并对整点峰值压力做了缓冲,使得使用更低配置的数据库也能平稳应对整点峰值。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1