一种命令排队方法及命令排队执行的管理系统技术方案

技术编号:38926950 阅读:10 留言:0更新日期:2023-09-25 09:34
本申请涉及命令排队技术领域,具体涉及一种命令排队方法及命令排队执行的管理系统;该方法包括:获取待排队的命令调用请求,获取该命令调用请求的命令属性信息;获取该命令调用请求对应的相关设备的排队标记信息;根据该命令属性信息及该排队标记信息,对该命令调用请求进行命令排队处理;本申请实施例引入排队服务,根据命令属性信息及排队标记信息,对待排队的命令调用请求进行命令排队处理,仅需对相关联的OpenAPI服务模块及应用服务模块做一点修改适配便可。采用本申请实施例的排队服务,App模块完全不用修改,有着良好的用户体验。有着良好的用户体验。有着良好的用户体验。

【技术实现步骤摘要】
一种命令排队方法及命令排队执行的管理系统


[0001]本申请涉及命令排队
,具体涉及一种命令排队方法及命令排队执行的管理系统。

技术介绍

[0002]近年来随着物联网技术的快速普及,各种式样的IoT设备(物联网设备)都接入物联网,通过App/语音/触屏终端载体,实现远程可连可控。
[0003]由于IoT设备能力差异巨大,仍大量存在一些能力受限的设备,他们本身不具备处理并发的机制,不能同时接收多个命令请求,这些设备即为受限设备。因此,在受限设备上执行有效的命令排队非常重要,当前常见的IoT设备的管理模式为四层,分别为App、OpenAPI服务层、应用服务及设备。现有的排队机制一般会在App侧、基于HTTP协议的OpenAPI服务侧、应用服务侧实现。其中,App侧有其局限性,仅能满足App的用户发起的命令操作是串行排队的,并不能保证多个用户的并发操作,并且如果是多种形态的App,则所有的App都需要做该处理,效率低下,如果是第三方语音服务平台,没有办法做到在App侧实现排队;基于HTTP协议的OpenAPI服务侧,由于大部分OpenAPI服务是无状态的,做为前端反向代理服务,例如Apache、Nginx、OpenResty,为了支持高并发,这些应用程序在设计上是多个进程并行提供服务的,多个工作进程是不适合基于内存操作做并发控制处理,存在大大降低执行效率,实现难度大等问题;而应用服务侧,应用服务直接与设备打交道,其核心是维护与多个设备的连接,在逻辑上通常较为简单,一般完成把命令透传给相应的设备,从设备接收命令的回应包,以及接收设备的变化事件的工作;如果要引入排队机制,势必会破坏应用服务原先简单的业务逻辑,带来隐藏的不稳定性。
[0004]因此,在上述方案中,当瞬时高峰多个命令一起到达受限设备时,受限设备无法并发处理命令请求,导致存在部分命令处理失败或设备过载的情况。

技术实现思路

[0005]有鉴于此,本申请实施例提供了一种命令排队方法及命令排队执行的管理系统,不改变原先的业务架构,引入排队服务对相关设备执行命令进行排队处理,提高命令处理效率,该技术方案如下。
[0006]第一方面,本申请实施例提供了一种命令排队方法,所述方法包括:
[0007]获取待排队的命令调用请求;
[0008]获取所述命令调用请求的命令属性信息;所述命令属性信息包括相关设备的地址、相关设备的执行命令间隔时间、相关设备的最大命令排队量、相关设备的原始执行命令体及命令回应句柄中的至少一者;
[0009]获取所述命令调用请求对应的相关设备的排队标记信息;所述排队标记信息包括所述相关设备的执行状态、正在执行命令的开始时间戳、最近已执行完命令的时间戳、当前的相关命令数量中的至少一者;
[0010]根据所述命令属性信息及所述排队标记信息,对所述命令调用请求进行命令排队处理。
[0011]根据上述技术手段,本申请实施例引入排队服务,根据命令属性信息及排队标记信息,对待排队的命令调用请求进行命令排队处理,仅需对相关联的OpenAPI服务模块及应用服务模块做一点修改适配便可。这样原先的业务架构不受影响,在需要对相关设备执行命令进行排队处理的时候引入该排队服务即可,若不需要排队服务,则把该服务去除即可。采用本申请实施例的排队服务,则App模块完全不用修改,各种形态的App,如原生App、小程序、触控面板、语音服务等都不会受影响,有着良好的用户体验。
[0012]结合第一方面,在一种实施方式中,根据所述相关设备的地址及所述排队标记信息,构建相关设备排队标记字典;所述相关设备排队标记字典用于根据所述相关设备的地址查询所述相关设备的排队状态。
[0013]根据上述技术手段,通过上述相关设备排队标记字典,可以快速的根据该相关设备的地址查询该相关设备的排队状态,以提高排队效率。
[0014]结合第一方面对应的实施方式,当所述当前的相关命令数量超过目标数量阈值时,则丢弃所述待排队的命令调用请求,并反馈命令队列已满信息;
[0015]当所述当前的相关命令数量未超过所述目标数量阈值时,则将所述待排队的命令调用请求加入命令队列,并对所述当前的相关命令数量进行更新;所述命令队列用于按照先进先出原则对所述待排队的命令调用请求进行存储及排序。
[0016]根据上述技术手段,该命令队列的先进先出原则保证排队处理的效率及准确性。
[0017]结合第一方面对应的实施方式,构建排队线程池,并通过所述排队线程池的执行线程从所述命令队列中获取可执行的命令;
[0018]根据所述命令属性信息及排队标记信息,通过所述排队线程池的执行线程对所述命令队列中的不同相关设备之间的可执行命令进行命令并发处理,对所述命令队列中的相同相关设备之间的可执行命令进行命令排队处理。
[0019]根据上述技术手段,排队线程池的线程数量可根据需要进行配置,通过该排队线程池对不同相关设备之间命令并发处理,对相同相关设备的命令做排队处理。
[0020]结合第一方面对应的实施方式,当无法获取所述相关设备的排队标记信息时,则定义所述相关设备为初次执行命令设备,所述排队线程池的执行线程判断所述待排队的命令调用请求为可执行的命令,并进行获取;
[0021]当所述相关设备的执行状态为未执行,且正在执行命令的开始时间戳满足所述相关设备的执行命令间隔时间时,则所述排队线程池的执行线程判断所述待排队的命令调用请求为可执行命令,并进行获取。
[0022]根据上述技术手段,根据相关设备的执行状态及正在执行命令的开始时间戳判断待排队的命令调用请求是否为可执行命令,对待排队的命令调用请求进行命令排队处理,采用本申请实施例的排队服务,则App模块完全不用修改,各种形态的App,如原生App、小程序、触控面板、语音服务等都不会受影响,有着良好的用户体验。
[0023]结合第一方面对应的实施方式,当所述待排队的命令调用请求为不可执行的命令,且所述相关设备执行完上一个命令、所述最近已执行完命令的时间戳满足所述相关设备的执行命令间隔时间时,则所述排队线程池的执行线程再次判断所述待排队的命令调用
请求为可执行的命令,并进行获取。
[0024]根据上述技术手段,根据相关设备的执行状态及正在执行命令的开始时间戳判断待排队的命令调用请求是否为可执行命令,对待排队的命令调用请求进行命令排队处理,采用本申请实施例的排队服务,则App模块完全不用修改,各种形态的App,如原生App、小程序、触控面板、语音服务等都不会受影响,有着良好的用户体验。
[0025]结合第一方面对应的实施方式,对所述可执行的命令的相关设备的执行状态、正在执行命令的开始时间戳及当前的相关命令数量进行更新。
[0026]结合第一方面对应的实施方式,在所述排队线程池的执行线程执行完所述可执行的命令后,对所述可执行的命令的相关设备的执行状态及最近已执行完命令的时间戳进行更新。
[0027]结合第一方面对应的实施方式,当所述相关设本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种命令排队方法,其特征在于,所述方法包括:获取待排队的命令调用请求;获取所述命令调用请求的命令属性信息;所述命令属性信息包括相关设备的地址、相关设备的执行命令间隔时间、相关设备的最大命令排队量、相关设备的原始执行命令体及命令回应句柄中的至少一者;获取所述命令调用请求对应的相关设备的排队标记信息;所述排队标记信息包括所述相关设备的执行状态、正在执行命令的开始时间戳、最近已执行完命令的时间戳、当前的相关命令数量中的至少一者;根据所述命令属性信息及所述排队标记信息,对所述命令调用请求进行命令排队处理。2.根据权利要求1所述的方法,其特征在于,在所述获取所述命令调用请求对应的接收设备的排队标记信息之后,所述方法还包括:根据所述相关设备的地址及所述排队标记信息,构建相关设备排队标记字典;所述相关设备排队标记字典用于根据所述相关设备的地址查询所述相关设备的排队状态。3.根据权利要求1所述的方法,其特征在于,在所述对所述命令调用请求进行命令排队处理之前,所述方法包括:当所述当前的相关命令数量超过目标数量阈值时,则丢弃所述待排队的命令调用请求,并反馈命令队列已满信息;当所述当前的相关命令数量未超过所述目标数量阈值时,则将所述待排队的命令调用请求加入命令队列,并对所述当前的相关命令数量进行更新;所述命令队列用于按照先进先出原则对所述待排队的命令调用请求进行存储及排序。4.根据权利要求3所述的方法,其特征在于,所述根据所述命令属性信息及所述排队标记信息,对所述命令调用请求进行命令排队处理,包括:构建排队线程池,并通过所述排队线程池的执行线程从所述命令队列中获取可执行的命令;根据所述命令属性信息及排队标记信息,通过所述排队线程池的执行线程对所述命令队列中的不同相关设备之间的可执行命令进行命令并发处理,对所述命令队列中的相同相关设备之间的可执行命令进行命令排队处理。5.根据权利要求4所述的方法,其特征在于,所述通过所述排队线程池的执行线程从所述命令队列中获取可执行的命令,包括:当无法获取所述相关设备的排队标记信息时,则定义所述相关设备为初次执行命令设备,所述排队线程池的执行线程判断所述待排队的命令调用请求为可执行的命令,并进行获取;当所述相关设备的执行状态为未执行,且正在执行命令的开始时间...

【专利技术属性】
技术研发人员:范晓群赵春生朱纯
申请(专利权)人:杭州行至云起科技有限公司
类型:发明
国别省市:

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

1