一种设备数据顺序读取方法、设备及介质技术

技术编号:39574028 阅读:7 留言:0更新日期:2023-12-03 19:26
本申请公开了一种设备数据顺序读取方法、设备及介质,方法包括:数据读取控制模块接收数据处理模块的ID;对数据读取控制模块自身进行加锁处理;根据数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据;判断第一数据是否读取成功;若否,则从设备数据池中读取待处理的一条第二数据;将第二数据缓存到动态队列管理模块,判断第二数据是否缓存成功;若否,则确定其他数据处理模块均不在处理第二数据所对应设备的数据,将第二数据返回数据处理模块,并对数据读取控制模块自身进行解锁处理。在保证高并发效率和高灵活性的前提下,实现对同一设备数据的按顺序依次处理,既保证数据处理的顺序性,又保证后台服务处理的性能。性能。性能。

【技术实现步骤摘要】
一种设备数据顺序读取方法、设备及介质


[0001]本申请涉及物联网
,尤其涉及一种设备数据顺序读取方法、设备及介质。

技术介绍

[0002]在物联网应用的很多场景下,将有大量的前端感知设备,这些设备感知的数据上传到后台服务器上,后台服务器需要实时对数据进行处理,以及时做出判断进行响应。有些场景下,后台服务器在处理前端设备上传上来的数据时,需要对同一设备的数据保证按顺序依次处理,否则会导致错误。比如,有几千台车辆上报位置数据,后台服务需要根据车辆的实时位置计算出车辆行驶距离,此时,对于同一台车辆来说,对其位置数据的处理必须按顺序依次进行,如果顺序乱了,计算出的行驶距离就会有误。同时,由于有几千台车辆在同时上传数据,后台服务需要启动多个数据处理模块并行处理,才能够及时处理上传的数据。如果有两个数据处理模块在同时处理同一辆车的两条数据,由于数据处理模块的处理速度存在不确定性,就有可能先读到数据的处理模块还没有处理完,而后读到数据的模块已经处理完,从而引发计算错误。
[0003]目前在对同一设备的数据保证按顺序依次处理时,通常对前端设备绑定固定的数据处理模块来进行处理,每个设备的数据只在一个数据处理模块上处理,每个数据处理模块处理数据是顺序进行的,不会把设备数据的顺序弄乱。
[0004]但是,如果前端设备增加,后台服务需要再增加对应的数据处理模块,这时,都需要调整设备跟数据处理模块的绑定关系,不能自动适应,调整非常麻烦,导致灵活性差,并且在前端设备的数量较大时,过多数据处理模块,也将导致服务性能压力大,从而最终导致设备数据顺序读取效率低。

技术实现思路

[0005]本申请实施例提供一种设备数据顺序读取方法、设备及介质,用于解决设备数据顺序读取效率低的问题。
[0006]本申请实施例采用下述技术方案:
[0007]一方面,本申请实施例提供了一种设备数据顺序读取方法,该方法包括:数据读取控制模块接收数据处理模块的调用请求与所述数据处理模块的ID;每个数据处理模块对应不同的ID;对数据读取控制模块自身进行加锁处理,根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据;所述动态队列管理模块包括正在处理数据的数据处理模块与相应设备之间的对应关系,以及通过从设备数据池读取数据,临时缓存所述数据的队列;其中,不同设备对应不同的队列;判断所述第一数据是否读取成功,若是,则将所述第一数据返回所述数据处理模块;若否,则从设备数据池中读取待处理的一条第二数据;所述第二数据为任意一个设备的数据;将所述第二数据缓存到所述动态队列管理模块,判断所述第二数据是否缓存成功;若否,则确定其他数据处理模块均不在处理所述第二数据所对应设备的数据,将所述第二数据返回所述数据处理模块,并对所述数据读取控制模
块自身进行解锁处理;若是,则确定存在其他数据处理模块正在处理所述第二数据所对应设备的数据,重新从所述设备数据池中读取待处理的一条第二数据,直至所述第二数据缓存不成功。
[0008]一个示例中,所述根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据之前,所述方法还包括:确定每个数据处理模块的关联项;所述关联项包括数据处理模块的ID、设备的数据key值、队列、队列数据最后一次被读取的时间;根据所述每个数据处理模块的关联项,构建动态列表;根据所述每个数据处理模块在处理一条设备数据时,所需要的最长时间,构建超时器;构建取数据接口与缓存数据接口,所述取数据接口用于从所述动态队列管理模块读取设备数据,所述缓存数据接口用于将所述设备数据池中的设备数据缓存至所述动态队列管理模块;根据所述动态列表、所述超时器、所述取数据接口、所述缓存数据接口,构建所述动态队列管理模块。
[0009]一个示例中,所述根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据,具体包括:所述动态队列管理模块,通过所述取数据接口接收所述所述数据处理模块的ID;根据所述数据处理模块的ID,判断是否匹配到所述数据处理模块的关联项;若是,若在所述数据处理模块的关联项中,确定队列的设备数据不为空,则从所述队列中取出时间最早的一条设备数据,将所述时间最早的一条设备数据确定为所述待处理的一条第一数据,向所述数据读取控制模块返回所述待处理的一条第一数据,并将队列数据最后一次被读取的时间设置为当前时间。
[0010]一个示例中,所述方法还包括:若在所述数据处理模块的关联项中,确定队列的设备数据为空,则将所述关联项从所述动态列表进行删除;从所述动态列表的其他所有关联项中,确定当前时间与所述其他所有关联项中队列数据最后一次被读取的时间之前的时间间隔;判断是否具有时间间隔超过超时器中最长时间的超时关联项;若否,则向所述数据读取控制模块返回空数据。
[0011]一个示例中,所述方法还包括:若具有时间间隔超过超时器中最长时间的超时关联项,则判断所述超时关联项中队列的设备数据是否为空;若是,则将所述超时关联项从所述动态列表进行删除;若否,则将任意一个超时关联项中数据处理模块的ID,替换为所述数据处理模块的ID;从所述任意一个超时关联项的队列中取出时间最早的一条设备数据,将所述时间最早的一条设备数据确定为所述待处理的一条第一数据,向所述数据读取控制模块返回所述待处理的一条第一数据,并将队列数据最后一次被读取的时间设置为当前时间。
[0012]一个示例中,所述方法还包括:若未匹配到所述数据处理模块的关联项,则判断是否具有时间间隔超过超时器中最长时间的超时关联项;若否,则向所述数据读取控制模块返回空数据。
[0013]一个示例中,所述将所述第二数据缓存到所述动态队列管理模块,具体包括:所述动态队列管理模块,通过所述缓存数据接口,接收所述数据处理模块的ID与所述第二数据;通过调用数据key值生成模块,计算所述第二数据的key值;同一个设备的数据key值必须相同;从所述动态列表中,检索包含所述key值的关联项;若具有包含所述key值的关联项,则将所述第二数据存放至所述包含所述key值的关联项中队列的尾部;向所述数据读取控制模块返回空数据,以向所述数据读取控制模块表示缓存成功。
[0014]一个示例中,所述方法还包括:若不具有包含所述key值的关联项,则在所述动态列表中,新增一个关联项;在新增关联项中,将数据处理模块的ID设置为所述数据处理模块的ID;将设备的数据key值设置为待处理设备的数据key值;将队列设置为一个新的空队列;将队列数据最后一次被读取的时间设置为当前时间;向所述数据读取控制模块返回所述第二数据,以向所述数据读取控制模块表示未缓存成功。
[0015]另一方面,本申请实施例提供了一种设备数据顺序读取设备,应用于数据读取控制模块,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:接收数据处理模块的调用请求与所述数据处理模块的ID;每个数据处理模块对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种设备数据顺序读取方法,其特征在于,所述方法包括:数据读取控制模块接收数据处理模块的调用请求与所述数据处理模块的ID;每个数据处理模块对应不同的ID;对数据读取控制模块自身进行加锁处理,根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据;所述动态队列管理模块包括正在处理数据的数据处理模块与相应设备之间的对应关系,以及通过从设备数据池读取设备的数据,临时缓存所述数据的队列;其中,不同设备对应不同的队列;判断所述第一数据是否读取成功,若是,则将所述第一数据返回所述数据处理模块;若否,则从设备数据池中读取待处理的一条第二数据;所述第二数据为任意一个设备的数据;将所述第二数据缓存到所述动态队列管理模块,判断所述第二数据是否缓存成功;若否,则确定其他数据处理模块均不在处理所述第二数据所对应设备的数据,将所述第二数据返回所述数据处理模块,并对所述数据读取控制模块自身进行解锁处理;若是,则确定存在其他数据处理模块正在处理所述第二数据所对应设备的数据,重新从所述设备数据池中读取待处理的一条第二数据,直至所述第二数据缓存不成功。2.根据权利要求1所述的方法,其特征在于,所述根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据之前,所述方法还包括:确定每个数据处理模块的关联项;所述关联项包括数据处理模块的ID、设备的数据key值、队列、队列数据最后一次被读取的时间;根据所述每个数据处理模块的关联项,构建动态列表;根据所述每个数据处理模块在处理一条设备数据时,所需要的最长时间,构建超时器;构建取数据接口与缓存数据接口,所述取数据接口用于从所述动态队列管理模块读取设备数据,所述缓存数据接口用于将所述设备数据池中的设备数据缓存至所述动态队列管理模块;根据所述动态列表、所述超时器、所述取数据接口、所述缓存数据接口,构建所述动态队列管理模块。3.根据权利要求2所述的方法,其特征在于,所述根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据,具体包括:所述动态队列管理模块,通过所述取数据接口接收所述数据处理模块的ID;根据所述数据处理模块的ID,判断是否匹配到所述数据处理模块的关联项;若是,若在所述数据处理模块的关联项中,确定队列的设备数据不为空,则从所述队列中取出时间最早的一条设备数据,将所述时间最早的一条设备数据确定为所述待处理的一条第一数据,向所述数据读取控制模块返回所述待处理的一条第一数据,并将队列数据最后一次被读取的时间设置为当前时间。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:若在所述数据处理模块的关联项中,确定队列的设备数据为空,则将所述关联项从所述动态列表进行删除;从所述动态列表的其他所有关联项中,确定当前时间与所述其他所有关联项中队列数据最后一次被读取的时间之前的时间间隔;
判断是否具有时间间隔超过超时器中最长时间的超时关联项;若否,则向所述数据读取控制模块返回空数据。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:若具有时间间隔超过超时器中最长时间的超时关联项,则判断所述超时关联项中队列的设备数据是否为空;若是,则将所述超时关联项从所述动态列表进行删除;若否,则将任意一个超时关联项中数据处理模块的ID,替换为所述数据处理模块的ID;从所述任意一个超时关联项的队列中取出时间最早的一条设备数据,将所述时间最早的一条设备数据确定为所述待处理的一条第一数据,向所述数据读取控制模块返回所述待处理的一条第一数据,并将队列数据最后一次被读取的时间设置为当前时间。6.根据权利要求3所述的方法,其特征在于,所述方法还包括:若未匹配到所述数据处理模块的关联项,则判断是否具有时间间隔超过超时...

【专利技术属性】
技术研发人员:牛文强韩正野李杰赵强郭淑超
申请(专利权)人:山东数据交易有限公司
类型:发明
国别省市:

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

1