本发明专利技术公开一种分布式水利RTU数据采集系统及方法,包括RTU报文发送模块、Netty接收模块、第一MQ消息发布模块、第一数据库模块、订阅接收模块、图片报文判断模块、图片数据包判断模块、Redis模块、Redis读取模块、组装生成模块和第二数据库模块;该分布式水利RTU数据采集系统采用分布式架构,基于被广泛使用的Java网络编程框架Netty,配合高性能的Redis数据库以及NOSQL数据库MongoDB、高吞吐的消息队列Kafka。通过在接收报文、解析报文、存储报文明文的各个环节,合理利用各种高性能框架或技术,使得在高并发情况下保证采集数据的时效性、完整性。
A distributed RTU data acquisition system and method
【技术实现步骤摘要】
一种分布式水利RTU数据采集系统及方法
本专利技术涉及一种分布式水利RTU数据采集系统及方法。
技术介绍
随着社会的不断前进、信息化的高速发展,在水利行业监测数据采集管理中,管理部门对其管理要求越来越精细化、智能化。水文水资源部门管理的水文站网越来越密集。面对高频的采集、海量的采集数据,研发出一款高性能、高可用的智能设备采集平台可为管理单位在防洪抢险、水资源税征收等场景提供精准、可靠的数据保障的系统是亟待解决的。
技术实现思路
本专利技术要解决的技术问题是提供一种分布式水利RTU数据采集系统,其采用分布式架构,基于被广泛使用的Java网络编程框架Netty,配合高性能的Redis数据库以及NOSQL数据库MongoDB、高吞吐的消息队列Kafka。通过在接收报文、解析报文、存储报文明文的各个环节,合理利用各种高性能框架或技术,使得在高并发情况下保证采集数据的时效性、完整性。为解决上述问题,本专利技术采用如下技术方案:一种分布式水利RTU数据采集系统,其特征在于:包括RTU报文发送模块、Netty接收模块、第一MQ消息发布模块、第一数据库模块、订阅接收模块、图片报文判断模块、图片数据包判断模块、Redis模块、Redis读取模块、组装生成模块和第二数据库模块。作为优选,还包含有解析模块、第二MQ消息发布模块、第二订阅接收模块和发布数据服务模块。作为优选,所述第一数据库模块为NoSQL数据库。作为优选,所述第一数据库模块为MongoDB数据库。作为优选,所述第二数据库模块为关系型数据库模块。作为优选,所述Netty接收模块被配置为在RTU与Netty建立连接并创建处理通道之后,采用java中的HashMap以RTU的地址为key,通道对象为value的方式存入内存中,下次该RTU再上报的时候,根据RTU的地址直接从内存中取到通道对象进行下一步处理,当该RTU下线之后,从内存中去掉该通道信息。作为优选,所述Netty接收模块还被配置为响应RTU报文发送模块,通知RTU报文发送模块接收成功。本专利技术还提供一种分布式水利RTU数据采集系统的工作方法:包括以下步骤:S1:RTU发布报文;S2:Netty接收报文,在RTU与Netty建立连接并创建处理通道之后,采用java中的HashMap以RTU的地址为key,通道对象为value的方式存入内存中,下次该RTU再上报时,根据RTU的地址直接从内存中取到通道对象进行下一步处理,当该RTU下线之后,从内存中去掉该通道信息;S3:正常报文,Netty响应TUR,通知TUR接收成功;S4:MQ发布消息并将报文存入数据库;S5:订阅接收;S6:图片报文;S7:判断图片报文是否为最后一个图片数据包;S8:若不是最后一个图片数据包则存入Redis中,若是最后一个图片数据包,则读取Redis内的该图片的全部数据包;S9:组装报文,生成图片;S10:存入数据库。作为优选,所述步骤S6中,若不是图片报文则依次对报文解析成明文,MQ发布消息,订阅接收明文,最后发布数据服务并存入数据量。本专利技术的有益效果为:采用分布式架构,基于被广泛使用的Java网络编程框架Netty,配合高性能的Redis数据库以及NOSQL数据库MongoDB、高吞吐的消息队列Kafka。通过在接收报文、解析报文、存储报文明文的各个环节,合理利用各种高性能框架或技术,使得在高并发情况下保证采集数据的时效性、完整性。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术一种分布式水利RTU数据采集系统工作方法流程图。图2为本专利技术一种分布式水利RTU数据采集系统的图片处理流程。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。实施例1一种分布式水利RTU数据采集系统,包括RTU报文发送模块、Netty接收模块、第一MQ消息发布模块、第一数据库模块、订阅接收模块、图片报文判断模块、图片数据包判断模块、Redis模块、Redis读取模块、组装生成模块和第二数据库模块。在本实施例中,第一数据库模块为NoSQL数据库。在其他实施例中,第一数据库模块为MongoDB数据库。作为优选,Netty接收模块被配置为在RTU与Netty建立连接并创建处理通道之后,采用java中的HashMap以RTU的地址为key,通道对象为value的方式存入内存中,下次该RTU再上报的时候,根据RTU的地址直接从内存中取到通道对象进行下一步处理,当该RTU下线之后,从内存中去掉该通道信息。具体的,Netty接收模块还被配置为响应RTU报文发送模块,通知RTU报文发送模块接收成功。如图1所示,本实施例还提供一种分布式水利RTU数据采集系统的工作方法:包括以下步骤:S1:RTU发布报文,具体的通过RTU报文发送模块发布报文;S2:Netty接收模块接收RTU报文发送模块发送的报文,在RTU与Netty接收模块建立连接并创建处理通道之后,采用java中的HashMap以RTU的地址为key,通道对象为value的方式存入内存中,下次该RTU再上报的时候,根据RTU的地址直接从内存中取到通道对象进行下一步处理,当该RTU下线之后,从内存中去掉该通道信息;S3:正常报文,Netty接收模块响应TUR,通知TUR接收成功;S4:第一MQ消息发布模块发布消息并将报文存入第一数据库模块;S5:订阅接收模块订阅接收;S6:图片报文;S7:判断图片报文是否为最后一个图片数据包;S8:若不是最后一个图片数据包则存入Redis中,若是最后一个图片数据包,则读取Redis内的该图片的全部数据包;S9:组装报文,生成图片;S10:存入第二数据库模块,也即关系型数据库模块。实施例中,大量RTU采集设备在同一时刻连接采集平台,Netty接收模块作为高性能的基础通信组件,承担了与各个客户端的连接的任务。在高并发的场景下若是频繁地创建通道,会导致CPU开销增大而造成线程堵塞最终导致响应慢、丢包等各种异常情况。为了避免此种情况,在RTU与Netty接收模块建立连接并创建处理通道之后,采用java中的HashMap以RTU的地址为key,通道对象为value的方式存入内存中,下次该RTU再上报的时候,根据RTU的地址直接从内存中取到通道对象进行下一步处理,当该RTU下线之后,从内存中去掉该通道信息。通过Netty接收模块接收本文档来自技高网...
【技术保护点】
1.一种分布式水利RTU数据采集系统,其特征在于:包括RTU报文发送模块、Netty接收模块、第一MQ消息发布模块、第一数据库模块、订阅接收模块、图片报文判断模块、图片数据包判断模块、Redis模块、Redis读取模块、组装生成模块和第二数据库模块。/n
【技术特征摘要】
1.一种分布式水利RTU数据采集系统,其特征在于:包括RTU报文发送模块、Netty接收模块、第一MQ消息发布模块、第一数据库模块、订阅接收模块、图片报文判断模块、图片数据包判断模块、Redis模块、Redis读取模块、组装生成模块和第二数据库模块。
2.根据权利要求1所述的一种分布式水利RTU数据采集系统,其特征在于:还包含有解析模块、第二MQ消息发布模块、第二订阅接收模块和发布数据服务模块。
3.根据权利要求2所述的一种分布式水利RTU数据采集系统,其特征在于:所述第一数据库模块为NoSQL数据库。
4.根据权利要求2所述的一种分布式水利RTU数据采集系统,其特征在于:所述第一数据库模块为MongoDB数据库。
5.根据权利要求4所述的一种分布式水利RTU数据采集系统,其特征在于:所述第二数据库模块为关系型数据库模块。
6.根据权利要求5所述的一种分布式水利RTU数据采集系统,其特征在于:所述Netty接收模块被配置为在RTU与Netty建立连接并创建处理通道之后,采用java中的HashMap以RTU的地址为key,通道对象为value的方式存入内存中,下次该RTU再上报的时候,根据RTU的地址直接从内存中取到通道对象进行下一步处理,当该RTU下线之后,从内存中去掉该通道信息。
【专利技术属性】
技术研发人员:向其星,陈俞安,李超文,
申请(专利权)人:深圳市东深电子股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。