基于MQTT的数据库记录的高并发访问系统、方法及存储介质与流程

文档序号:25721897发布日期:2021-07-02 21:06阅读:376来源:国知局
基于MQTT的数据库记录的高并发访问系统、方法及存储介质与流程

本发明涉及数据库技术领域,尤其涉及一种基于mqtt的数据库记录的高并发访问系统、方法及存储介质。



背景技术:

由于国家电网大力推荐“三型两网、世界一流”的建设,而模组终端属于泛在电力物联网的边缘产品,采用硬件平台化、功能软件化、结构模块化、软硬件解耦设计,以满足高性能并发、大容量存储、多采集对象需求。模组终端能实现集配电台区供用电信息采集、各采集终端或电能表数据收集、设备状态监测及通讯组网、就地化分析决策、协同计算等功能,支撑营销、配电及新兴业务发展需求。但是基于上述庞大的数据量,如何高效地对数据库进行访问是难以解决的问题。

而mqtt是机器对机器(m2m)/物联网(iot)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用,是专为受限设备和低带宽、高延迟或不可靠的网络而设计。

鉴于此,本领域亟需一种新的基于mqtt的数据库记录的高并发访问系统、方法及存储介质,以达到对数据库的高并发访问。



技术实现要素:

本发明提供一种基于mqtt的数据库记录的高并发访问系统、方法及存储介质,以解决上述的问题。

第一方面,本发明提供一种基于mqtt的数据库记录的高并发访问系统,包括:mqtt接口模块、mqtt委托模块、任务管理模块、业务接口模块、sqlite3数据库接口模块以及数据库;所述mqtt接口模块、mqtt委托模块、任务管理模块、业务接口模块、sqlite3数据库接口模块以及数据库依次通信连接,所述mqtt接口模块与所述业务接口模块通信连接;

所述mqtt接口模块用于进行mqtt消息订阅及发布,所述mqtt消息包括订阅主题和业务请求;

所述mqtt委托模块用于将所述mqtt消息传输至所述任务管理模块;

所述任务管理模块用于根据所述订阅主题与委托匹配函数的匹配结果,将所述业务请求分发至对应的所述业务接口模块;

所述业务接口模块用于将所述业务请求分发至对应的业务队列;

所述sqlite3数据库接口模块用于供所述业务接口模块对所述数据库进行高并发访问。

优选地,所述任务管理模块还用于:

所述系统启动时,根据不同的业务请求对象进行单实例化;

初始化单实例化后的所述业务请求对象;

将所述业务请求对象对应的所述委托匹配函数绑定至所述任务管理模块。

优选地,所述mqtt接口模块还用于:

配置网络通信参数,所述网络通信参数包括ip、端口、心跳;

配置mqtt主题,用于进行mqtt消息的订阅;

确定所述mqtt消息对应的所述任务管理模块。

优选地,所述sqlite3数据库接口模块还用于:

配置数据库结构配置表;

初始化所述数据库结构配置表;

创建所述sqlite3数据库接口模块的服务对象,供所述业务接口模块访问。

优选地,所述业务接口模块还用于:

当所述mqtt消息到达所述业务队列时触发对应的业务请求线程,所述业务接口模块根据所述服务对象,通过所述sqlite3数据库接口模块对所述数据库进行高并发访问;

其中,所述业务请求线程使用linux线程同步等待机制获取队列中的所述业务请求。

优选地,所述对所述数据库进行高并发访问后,将得到的访问数据发送至客户端。

第二方面,本发明提供一种基于mqtt的数据库记录的高并发访问方法,包括:

进行mqtt消息订阅,所述mqtt消息包括订阅主题和业务请求;

将所述mqtt消息传输至任务管理模块;

根据所述订阅主题与委托匹配函数的匹配结果,将所述业务请求分发至对应的业务接口模块;

将所述业务请求分发至对应的业务队列;

对数据库进行高并发访问。

优选地,在所述进行mqtt消息订阅步骤前,还包括:

根据不同的业务请求对象进行单实例化;

初始化所述业务请求对象;

将所述业务请求对象对应的所述委托匹配函数绑定至所述任务管理模块。

优选地,在所述进行mqtt消息订阅步骤前,还包括:

配置数据库结构配置表;

初始化所述数据库结构配置表;

创建sqlite3数据库接口模块的服务对象,供所述业务接口模块访问。

第三方面,本发明提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于mqtt的数据库记录的高并发访问方法的步骤。

本发明的有益效果在于:本发明的基于mqtt的数据库记录的高并发访问系统、方法及存储介质,包括mqtt接口模块、mqtt委托模块、任务管理模块、业务接口模块、sqlite3数据库接口模块以及数据库,避免周期性的轮询消息队列,通过线程同步等待队列机制,可以满足对数据库的高并发访问及处理。

附图说明

图1是本发明实施例的基于mqtt的数据库记录的高并发访问系统的功能模块示意图;

图2是本发明实施例的基于mqtt的数据库记录的高并发访问方法的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

请参见图1,本发明实施例提供的基于mqtt的数据库记录的高并发访问系统100,为满足国网模组终端数据中心的高并发访问、数据库记录的唯一性而设计,该系统适用多种应用场景,具有一定的高度自适应性、高可扩展性。包括:mqtt接口模块10、mqtt委托模块20、任务管理模块30、业务接口模块40、sqlite3数据库接口模块50以及数据库60。其中,mqtt接口模块10、mqtt委托模块20、任务管理模块30、业务接口模块40、sqlite3数据库接口模块50以及数据库60依次通信连接,mqtt接口模块10与业务接口模块40通信连接。mqtt接口模块10用于进行mqtt消息订阅及发布,mqtt消息包括订阅主题和业务请求,订阅主题为消息类型,业务请求为负载,消息订阅者订阅主题后,接收该订阅主题的负载,在负载中指定相关的数据库结构配置表接口协议。mqtt委托模块20用于将mqtt消息传输至任务管理模块30;任务管理模块30用于根据订阅主题与委托匹配函数的匹配结果,将业务请求分发至对应的业务接口模块40;业务接口模块40用于将业务请求分发至对应的业务队列;sqlite3数据库接口模块50用于供业务接口模块40对数据库60进行高并发访问。

进一步地,在本实施例的基于mqtt的数据库记录的高并发访问系统100启动时,任务管理模块30根据不同的业务请求进行单实例化。由于业务请求涉及到的业务包括电能参数数据、电能表实时冻结数据、电能表分冻结数据、电能时表冻结数据、电能表日冻结数据、电能表月冻结数据、电能表年冻结数据等,任务管理模块30根据不同的业务请求进行初始化单实例化后的业务请求对象,将以上业务请求对象对应的委托匹配函数绑定至任务管理模块30。

进一步地,mqtt接口模块10包括mqtt服务基类子模块和mqtt派生类子模块。其中mqtt派生类子模块为paho或mosquitto,paho或mosquitto为不同的实现mqtt的代理器主程序,基于不同的开源代码,相关的api接口不一样,但api的功能相同,包括主题订阅、mqtt心跳周期绑定、mqtt代理服务器连接、mqtt数据的收发。本发明实施例通过mqtt服务基类子模块实现公共函数的分装,作为对外接口访问,用户只需依据不同场景动态创建不同的paho或mosquitto对象,通过mqtt服务基类子模块就可以实现,无需关注其内部的具体实现差异。进一步地,mqtt接口模块10给业务接口模块40配置网络通信参数,包括ip、端口、心跳;并配置mqtt主题,用于进行mqtt消息的订阅。

进一步地,sqlite3数据库接口模块50还用于在本实施例的基于mqtt的数据库记录的高并发访问系统100启动后配置数据库结构配置表;具体包括数据库文件名称、数据库存储路径、数据库表名和数据库表字段、数据库表索引、数据库表联合主键、是否启动内存数据库、是否启用wal预写日志。然后初始化所述数据库结构配置表;创建sqlite3数据库接口模块50的服务对象,供业务接口模块40访问。其中,服务对象为业务接口模块40,当mqtt消息到达业务接口模块40时,通过sqlite3数据库接口模块50对数据库60进行数据访问。

下面举例说明本实施例的数据库结构配置表的数据库表字段,如表1所示,为电能参数数据文件表。其中,逻辑号为实际物理设备的编号;数据类型为对数据标识的分类,方便记录按照不同的类型来处理(包括可初始化参数删除);测量点为数据标识所属的测量点;数据标识为数据id;数据长度为数据标识的长度;数据内容为数据表的具体内容。由于数据标识中的具体id未作为字段名称,而是作为字段内容,基于这种设计模式,可以使数据库中心高度自适应性、高可扩展性,数据文件表建表时通过联合主键“逻辑号+数据类+测量点+数据标识”可确保数据的唯一性。

表1电能参数数据文件表

本实施例的基于mqtt的数据库记录的高并发访问系统100在将业务请求对象对应的委托匹配函数绑定至任务管理模块30且创建各模块的服务对象后,mqtt接口模块10进行mqtt消息订阅;mqtt委托模块20将mqtt消息传输至任务管理模块30;任务管理模块30根据订阅主题与委托匹配函数的匹配结果,将业务请求分发至对应的业务接口模块40;业务接口模块40将业务请求分发至对应的业务队列,业务队列包括电能参数数据、电能表实时冻结数据、电能表分冻结数据、电能时表冻结数据、电能表日冻结数据、电能表月冻结数据、电能表年冻结数据等;sqlite3数据库接口模块50供业务接口模块40对数据库60进行高并发访问。

具体地,当mqtt消息到达对应的业务队列时触发对应的业务请求线程,业务接口模块40根据服务对象,通过sqlite3数据库接口模块50对所述数据库60进行高并发访问;其中,业务请求线程使用linux线程同步等待机制获取队列中的业务请求,由于业务线程使用了同步等待机制,所以当mqtt消息到达业务接口模块40中时将触发业务线程,因此线程省去了周期轮询队列,所以能够高并发访问。由于各个业务请求之间相互独立,相互没有任何关联,所以各自创建线程,采用“多线程+消息队列机制”提高数据模块的高并发访问。

进一步地,对数据库60进行高并发访问后将得到的访问数据发送至客户端。

上述基于mqtt的数据库记录的高并发访问系统100的各个模块/单元可全部或部分通过软件、硬件及其组合来实现。上述各模块/单元可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块/单元对应的操作。

请参见图2,本发明实施例提供的基于mqtt的数据库记录的高并发访问方法,用于实现上述的基于mqtt的数据库记录的高并发访问系统100,包括以下步骤:

s1、进行mqtt消息订阅,mqtt消息包括订阅主题和业务请求;

s2、将mqtt消息传输至任务管理模块30;

s3、根据订阅主题与委托匹配函数的匹配结果,将业务请求分发至对应的业务接口模块40;

s4、将业务请求分发至对应的业务队列;

s5、对数据库60进行高并发访问。

进一步地,在步骤s1前,还包括:

s11、根据不同的业务请求对象进行单实例化;

s12、初始化业务请求对象;

s13、将业务请求对象对应的委托匹配函数绑定至任务管理模块30。

具体地,在基于mqtt的数据库记录的高并发访问系统100启动时,任务管理模块30根据不同的业务请求进行单实例化。由于业务请求设计到的业务包括电能参数、电能表实时冻结数据、电能表分冻结数据、电能时表冻结数据、电能表日冻结数据、电能表月冻结数据、电能表年冻结数据等,任务管理模块30根据不同的业务请求进行初始化单实例化后的业务请求对象,将以上业务请求对象对应的委托匹配函数绑定至任务管理模块30。通过上述步骤,将委托匹配函数绑定至任务管理模块30,当mqtt消息到达任务管理模块30时能进行后续的匹配分发。

进一步地,在步骤s1前,还包括:

s21、配置数据库结构配置表;

s22、初始化所述数据库结构配置表;

s23、创建sqlite3数据库接口模块50的服务对象,供业务接口模块40访问。

具体地,sqlite3数据库接口模块50在本实施例的基于mqtt的数据库记录的高并发访问系统100启动后配置数据库结构配置表;具体包括数据库文件名称、数据库存储路径、数据库表名和数据库表字段、数据库表索引、数据库表联合主键、是否启动内存数据库、是否启用wal预写日志。然后sqlite3数据库接口模块50初始化所述数据库结构配置表;创建sqlite3数据库接口的服务对象,供业务接口模块40访问。

具体地,当mqtt消息到达对应的业务队列时触发对应的业务请求线程,业务接口模块40根据服务对象,通过sqlite3数据库接口模块50对所述数据库60进行高并发访问;其中,业务请求线程使用linux线程同步等待机制获取队列中的业务请求,由于业务线程使用了同步等待机制,所以当mqtt消息到达业务接口模块40中时将触发业务线程,因此线程省去了周期轮询队列,所以能够高并发访问。由于各个业务请求之间相互独立,相互没有任何关联,所以各自创建线程,采用“多线程+消息队列机制”提高数据模块的高并发访问。

进一步地,本发明实施例提供的基于mqtt的数据库记录的高并发访问方法还包括:s6、对数据库60进行高并发访问后将得到的访问数据发送至客户端。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。关于基于mqtt的数据库记录的高并发访问方法的步骤的具体限定可以参见上文中对于基于mqtt的数据库记录的高并发访问系统100的限定,在此不再赘述。

在一个实施例中,本发明实施例提供了一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中基于mqtt的数据库记录的高并发访问方法的步骤,或者,计算机程序被处理器执行时实现上述实施例中基于mqtt的数据库记录的高并发访问系统100的各模块/单元的功能,为避免重复,这里不再赘述。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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