一种基于队列的电表数据处理方法、系统及电子设备技术方案

技术编号:37144351 阅读:20 留言:0更新日期:2023-04-06 21:54
本发明专利技术提供一种基于队列的电表数据处理方法、系统及电子设备,属于数据处理技术领域,方法包括:初始化多个队列;将消息中间件中的电表实时数据分别写入多个队列中;所述消息中间件实时获取电表设备的数据,以得到电表实时数据;各队列中存储部分电表实时数据;采用多线程的方式提取多个队列中的电表实时数据,得到对应每个队列的电表数据;将各电表数据并行写入线程安全队列;采用多线程并行读取所述线程安全队列中的电表数据,并将读取出的电表数据批量写入时序数据库。通过使用多个队列对数据进行缓存,大大提高了数据的吞吐量,使得数据处理的每个步骤互不影响,在异步执行的同时保证了数据有序、安全地入库,提高了电表数据的入库效率。的入库效率。的入库效率。

【技术实现步骤摘要】
一种基于队列的电表数据处理方法、系统及电子设备


[0001]本专利技术涉及数据处理领域,特别是涉及一种基于队列的电表数据处理方法、系统及电子设备。

技术介绍

[0002]在设备监控系统中,为了更好的监控电表设备的实时电流、电压等数据,需要对电表设备的数据进行高效、有序以及安全的存储。边缘层中网关通过各种采集协议与电表设备通讯,采集电表设备数据并转发到云服务器的消息中间件,云服务经过数据处理将电表数据存储到时序数据库。
[0003]主流的时序数据库在存储以及查询方面做的都很完善,网关采集以及转发电表数据的技术也已经相当成熟,但是在云服务进行数据处理时还是会发生数据处理效率慢,容易丢失数据的问题。从消息中间件中订阅到消息之后,直接写入数据库,这样的写入效率很不理想,而且由于业务需求,需要对数据进行二次处理,会更加延长数据从上传到入库的时间。当每条消息不能高效地消费,会导致消息中间件中的数据积压,从而导致各个客户端连接断开,影响数据上传。

技术实现思路

[0004]本专利技术的目的是提供一种基于队列的电表数据处理方法、系统及电子设备,可避免消息中间件中的数据积压,提高电表数据的入库效率。
[0005]为实现上述目的,本专利技术提供了如下方案:
[0006]一种基于队列的电表数据处理方法,包括:
[0007]初始化多个队列;
[0008]将消息中间件中的电表实时数据分别写入多个队列中;所述消息中间件实时获取电表设备的数据,以得到电表实时数据;各队列中存储部分电表实时数据
[0009]采用多线程的方式提取多个队列中的电表实时数据,得到对应每个队列的电表数据;
[0010]将各电表数据并行写入线程安全队列;
[0011]采用多线程并行读取所述线程安全队列中的电表数据,并将读取出的电表数据批量写入时序数据库。
[0012]可选地,所述电表实时数据包括实时电流及实时电压。
[0013]可选地,所述将消息中间件中的电表实时数据分别写入多个队列中,具体包括:
[0014]启动多个客户端,并建立各客户端与消息中间件的通讯连接;客户端的数量与队列的数量相同,且每个客户端对应一个队列;
[0015]通过消息中间件将电表实时数据分发到每个客户端上;每个客户端存储部分电表实时数据;
[0016]各客户端将对应的电表实时数据写入对应的队列中。
[0017]可选地,所述采用多线程的方式提取多个队列中的电表实时数据,得到对应每个队列的电表数据,具体包括:
[0018]初始化一个线程池,并启动多个核心线程;所述核心线程的数量与队列的数量相同,且每个核心线程对应一个队列;
[0019]每隔设定时间间隔,将多个队列同时提交到所述线程池中;
[0020]针对任一队列,通过与所述队列对应的核心线程从所述队列中读取电表实时数据,并将读取出的电表实时数据转换为字符串数据,得到对应所述队列的电表数据。
[0021]可选地,所述线程安全队列为有界阻塞队列。
[0022]可选地,所述采用多线程并行读取所述线程安全队列中的电表数据,并将读取出的电表数据批量写入时序数据库,具体包括:
[0023]通过多个线程轮询从所述线程安全队列中读取电表数据,并将读取出的电表数据添加到预设的数组中;
[0024]在将所述线程安全队列中的电表数据全部读取并添加到所述数组中后,将所述数组序列化成一个字符串,得到序列化字符串;
[0025]调用时序数据库的写入接口,将所述序列化字符串写入所述时序数据库。
[0026]可选地,所述基于队列的电表数据处理方法还包括:
[0027]根据所述时序数据库中存储的电表数据,对电表设备的数据进行监控。
[0028]为实现上述目的,本专利技术还提供了如下方案:
[0029]一种基于队列的电表数据处理系统,包括:
[0030]初始化单元,用于初始化多个队列;
[0031]队列写入单元,与所述初始化单元连接,用于将消息中间件中的电表实时数据分别写入多个队列中;所述消息中间件实时获取电表设备的数据,以得到电表实时数据;各队列中存储部分电表实时数据;
[0032]数据提取单元,与所述队列写入单元连接,用于采用多线程的方式提取多个队列中的电表实时数据,得到对应每个队列的电表数据;
[0033]并行写入单元,与所述数据提取单元连接,用于将各电表数据并行写入线程安全队列;
[0034]入库单元,与所述并行写入单元连接,用于采用多线程并行读取所述线程安全队列中的电表数据,并将读取出的电表数据批量写入时序数据库。
[0035]为实现上述目的,本专利技术还提供了如下方案:
[0036]一种电子设备,包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行上述的基于队列的电表数据处理方法。
[0037]根据本专利技术提供的具体实施例,本专利技术公开了以下技术效果:
[0038]通过使用多个队列对电表实时数据进行缓存,大大提高了数据的吞吐量,并且使得数据处理的每个步骤互不影响,在异步执行的同时保证了数据有序、安全地入库,有效避免了消息中间件中的数据积压,提高了电表数据的入库效率。
附图说明
[0039]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所
需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0040]图1为本专利技术基于队列的电表数据处理方法的流程图;
[0041]图2为电表数据入库的过程示意图;
[0042]图3为本专利技术基于队列的电表数据处理系统的模块示意图。
[0043]符号说明:
[0044]初始化单元

1,队列写入单元

2,数据提取单元

3,并行写入单元

4,入库单元

5。
具体实施方式
[0045]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0046]本专利技术的目的是提供一种基于队列的电表数据处理方法、系统及电子设备,使用多个有界阻塞队列对数据进行缓存,提高处理数据的吞吐量和效率,使得数据处理的每个步骤异步执行的同时,保证数据有序、安全地入库。
[0047]为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。
[0048]首先介绍本专利技术使用到的相关技术:
[0049]队列:一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于队列的电表数据处理方法,其特征在于,所述基于队列的电表数据处理方法包括:初始化多个队列;将消息中间件中的电表实时数据分别写入多个队列中;所述消息中间件实时获取电表设备的数据,以得到电表实时数据;各队列中存储部分电表实时数据;采用多线程的方式提取多个队列中的电表实时数据,得到对应每个队列的电表数据;将各电表数据并行写入线程安全队列;采用多线程并行读取所述线程安全队列中的电表数据,并将读取出的电表数据批量写入时序数据库。2.根据权利要求1所述的基于队列的电表数据处理方法,其特征在于,所述电表实时数据包括实时电流及实时电压。3.根据权利要求1所述的基于队列的电表数据处理方法,其特征在于,所述将消息中间件中的电表实时数据分别写入多个队列中,具体包括:启动多个客户端,并建立各客户端与消息中间件的通讯连接;客户端的数量与队列的数量相同,且每个客户端对应一个队列;通过消息中间件将电表实时数据分发到每个客户端上;每个客户端存储部分电表实时数据;各客户端将对应的电表实时数据写入对应的队列中。4.根据权利要求1所述的基于队列的电表数据处理方法,其特征在于,所述采用多线程的方式提取多个队列中的电表实时数据,得到对应每个队列的电表数据,具体包括:初始化一个线程池,并启动多个核心线程;所述核心线程的数量与队列的数量相同,且每个核心线程对应一个队列;每隔设定时间间隔,将多个队列同时提交到所述线程池中;针对任一队列,通过与所述队列对应的核心线程从所述队列中读取电表实时数据,并将读取出的电表实时数据转换为字符串数据,得到对应所述队列的电表数据。5.根据权利要求1所述的基于队列的电表数据处理方法,其特征在于,所述线程安全队列为...

【专利技术属性】
技术研发人员:袁江
申请(专利权)人:北京力控元通科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1