查询信息的处理方法和装置、存储介质及电子装置与流程

文档序号:32158460发布日期:2022-11-12 01:12阅读:22来源:国知局
查询信息的处理方法和装置、存储介质及电子装置与流程

1.本发明涉及通信领域,具体而言,涉及一种查询信息的处理方法和装置、存储介质及电子装置。


背景技术:

2.在网络视频录像机(network video recorder,简称为nvr)对接多路前端时,需要获取前端离线时的统计数据,并存储到nvr端时。一般会在前端上线时,向前端发起请求。若离线数据量大,会向同一个前端发送多次数据查询请求,前端则需要不停的向nvr发送数据,对前端性能有一定影响。若能控制nvr查询频率和时机,避免前端出现在某段时间内一直发送数据而随后空闲的情形,则能减少对前端的压力,均衡前端的数据发送负载是一个需要解决的问题。
3.针对相关技术中,在前端设备的数据量过大的情况下,会向同一个前端发送多次数据查询请求,进而影响前端设备的性能等问题,尚未提出有效的解决方案。


技术实现要素:

4.本发明实施例提供了一种查询信息的处理方法和装置、存储介质及电子装置,以至少解决相关技术中,在前端设备的数据量过大的情况下,会向同一个前端发送多次数据查询请求,进而影响前端设备的性能等问题。
5.根据本发明实施例的一个实施例,提供了一种查询信息的处理方法,包括:根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对接的前端所对应的查询信息、所述查询信息对应的第一资源份额、所述前端在所述第一队列中已发送的第一数据量;根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;在nvr接收到所述目标前端根据所述第一数据请求发送的第一查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,其中,所述第二队列的优先级小于第一队列。
6.在一个示例性实施例中,根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,包括:根据所述多个查询信息所分别对应的第一资源份额和所述nvr中的随机数生成器生成的随机数从所述多个查询信息中确定目标查询信息。
7.在一个示例性实施例中,根据所述多个查询信息所分别对应的第一资源份额和所述nvr中的随机数生成器生成的随机数从所述多个查询信息中确定目标查询信息,包括:根据所述多个查询信息所分别对应的第一资源份额确定所述第一队列的资源份额和;在所述随机数生成器根据所述资源份额和生成所述随机数的情况下,确定所述随机数对应的目标份额区间,其中,所述多个查询信息分别对应有不同的份额区间,所述多个查询信息中的任一查询信息对应的份额区间的范围大小与所述任一查询信息的资源份额的数值大小一致;
将所述目标份额区间对应的查询信息作为所述目标查询信息。
8.在一个示例性实施例中,向所述目标查询信息对应的目标前端发送第一数据请求之后,所述方法还包括:接收所述目标前端根据所述第一数据查询请求发送的第一查询数据;确定所述查询数据中是否存在所述目标前端对应的第二资源份额,其中,所述第二资源份额为所述目标前端根据所述目标前端的负载均衡信息计算得出的数值,所述第二资源份额与所述负载均衡信息为反比关系;在所述查询数据中存在所述目标前端对应的第二资源份额的情况下,将所述第一资源份额更新为所述第二资源份额。
9.在一个示例性实施例中,向所述目标查询信息对应的目标前端发送第一数据请求之后,所述方法还包括:确定所述目标前端是否发送完所述目标前端对应的第二查询数据,其中,所述第二查询数据为所述目标前端对应的所有查询数据;在所述目标前端未发送完所述目标前端对应的第二查询数据的情况下,将所述第一查询数据的数据量和所述第一数据量进行相加,得到第二数据量。
10.在一个示例性实施例中,根据队列优先级和队列状态在多级反馈队列中确定第一队列之前,所述方法还包括:为所述nvr的多级反馈队列设置定时器;在所述定时器超时的情况下,将所述多级反馈队列中的第一前端的查询信息添加到所述多级反馈队列中的最高优先级队列,其中,所述第一前端用于指示在所述定时器的定时时间内未完成查询的前端。
11.在一个示例性实施例中,根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列之前或之后,所述方法还包括:在检测到第二前端接入到所述nvr的情况下,确定是否向所述第二前端发送第二数据请求;在确定向所述第二前端发送所述第二数据请求的情况下,将所述第二前端的查询信息设置在所述多级反馈队列中的最高优先级队列。
12.在一个示例性实施例中,根据队列优先级和队列状态在多级反馈队列中确定第一队列,包括:获取多级反馈队列中每一级反馈队列的队列优先级和队列状态,其中,所述队列状态至少包括以下之一:空状态、非空状态;根据每一级反馈队列的队列状态在多级反馈队列中确定队列状态为非空状态的队列;在所述非空状态的队列中确定优先级最高的队列,并将所述优先级最高的队列作为所述第一队列。
13.根据本发明实施例的另一个实施例,还提供了一种查询信息的处理装置,包括:第一确定模块,用于根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对接的前端所对应的查询信息、所述查询信息对应的第一资源份额、所述前端在所述第一队列中已发送的第一数据量;发送模块,用于根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;第二确定模块,用于在所述nvr接收到所述目标前端根据所述第一数据请求发送的第一查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;更新模块,用于在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,其中,所述第二队列的优先级小于第一队列。
14.根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述查询信息的处理方法。
15.根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的查询信息的处理方法。
16.在本发明实施例中,根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对接的前端所对应的查询信息、所述查询信息对应的第一资源份额、所述前端在所述第一队列中已发送的第一数据量;根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;在nvr接收到所述目标前端根据所述第一数据请求发送的第一查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,其中,所述第二队列的优先级小于第一队列;采用上述技术方案,解决了在前端设备的数据量过大的情况下,会向同一个前端发送多次数据查询请求,进而影响前端设备的性能等问题,进而通过为多级反馈队列分配资源份额,根据资源份额向目标前端发送数据请求,以及在所述目标前端根据数据请求发送完所有查询数据的情况下,将目标前端加入第二队列,兼顾了前端的状态进行查询,能均衡前端发送查询数据的压力,也可以在对接多个前端时,均衡对前端的查询,平衡了对前端的查询压力,进而提高了前端设备的性能。
附图说明
17.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
18.图1是本发明实施例的一种查询信息的处理方法的计算机终端的硬件结构框图;
19.图2是根据本发明实施例的查询信息的处理方法的流程图;
20.图3是根据本发明实施例的查询信息的处理方法的示意图;
21.图4是根据本发明实施例的一种查询信息的处理装置的结构框图。
具体实施方式
22.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
23.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
24.本技术实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种查询信息的处理方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,在一个示例性实施例中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
25.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的查询信息的处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
26.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
27.在本实施例中提供了一种查询信息的处理方法,应用于上述计算机终端,图2是根据本发明实施例的查询信息的处理方法的流程图,该流程包括如下步骤:
28.步骤s202,根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对接的前端所对应的查询信息、所述查询信息对应的第一资源份额、所述查询信息对应的前端在所述第一队列中已发送数据量统计信息;
29.步骤s204,根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;
30.步骤s206,在所述目标前端根据所述第一数据请求发送完所有查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;
31.步骤s208,在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,其中,所述第二队列的优先级小于第一队列。
32.需要说明的是,所述第二队列的优先级为紧邻的优先级小于第一队列的队列。
33.通过上述步骤,根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对接的前端所对应的查询信息、所述查询信息对应的第一资源份额、所述前端在所述第一队列中已发送的第一数据量;根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;在nvr接收到所述目标
前端根据所述第一数据请求发送的第一查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,解决了相关技术中,在前端设备的数据量过大的情况下,会向同一个前端发送多次数据查询请求,进而影响前端设备的性能等问题,通过为多级反馈队列分配资源份额,根据资源份额向目标前端发送数据请求,以及在所述目标前端根据数据请求发送完所有查询数据的情况下,将目标前端加入第二队列,兼顾了前端的状态进行查询,能均衡前端发送查询数据的压力,也可以在对接多个前端时,均衡对前端的查询,平衡了对前端的查询压力,进而提高了前端设备的性能。
34.需要说明的是,上述实施例的应用场景可以是以下场景:1)安防监控中人数统计:nvr需要从前端获取指定时间段的(比如一年)人数统计详细信息。在前端上线时,nvr向其发送查询消息,前端将数据发送至nvr,nvr保存在本地数据库中,方便用户进行自定义的查询;2)安防监控中车流控制:nvr需要向前端获取离线的视频结构化方向统计数据。在街道、广场、道路等场景中,人、车、非机动车的运动是有方向性的,如从左至右、从右至左,或双向。视频结构化方向统计功能可按需统计人、车、非机动车的流量数据,为城市道路规划、车流/人流控制、路线安排等提供指导,本发明实施例对具体的应用场景不做限定。
35.在一个示例性实施例中,根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,包括:根据所述多个查询信息所分别对应的第一资源份额和所述nvr中的随机数生成器生成的随机数从所述多个查询信息中确定目标查询信息。
36.具体的,nvr内部设置多级反馈队列,多级反馈队列中包括:所述nvr对接的前端所对应的查询信息,任何时刻一个前端的查询信息只能存在于一个队列中。为队列中的每一个查询信息分别配置一个资源份额,如取值1-100,初始时设置一个默认值,如50。nvr在对第一队列进行调度时,通过随机数发生器得到一个随机数,根据随机数生成器生成的随机数和第一资源份额确定对应的目标查询信息。
37.根据所述多个查询信息所分别对应的第一资源份额和所述nvr中的随机数生成器生成的随机数从所述多个查询信息中确定目标查询信息的方式有很多种,本发明实施例给出了一种实现方式,具体的:根据所述多个查询信息所分别对应的第一资源份额确定所述第一队列的资源份额和;在所述随机数生成器根据所述资源份额和生成所述随机数的情况下,确定所述随机数对应的目标份额区间,其中,所述多个查询信息分别对应有不同的份额区间,所述多个查询信息中的任一查询信息对应的份额区间的范围大小与所述任一查询信息的资源份额的数值大小一致;将所述目标份额区间对应的查询信息作为所述目标查询信息。
38.也就是说,先获取第一队列中所有查询信息的资源份额,将所有的资源份额进行相加,得到第一队列对应的资源份额和,然后通过随机数发生器生成一个0至资源份额和区间上的一个随机数,确定随机数落入哪个查询信息的资源份额所在的区间,将所述目标份额区间对应的查询信息作为所述目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求。这样保证了资源份额大的前端,有更大的概率在查询中被选中。
39.举例来讲,比如确定最高非空优先级队列后,假设该队列中有5个前端对应的查询信息,资源份额值取值范围在[0,100]。5个查询信息中资源份额值分别为30、60、40、30、80,则资源份额总和为30+60+40+30+80=240,则生成一个0-239范围内的随机数,即随机数发
生器的结果为0、1、2

239,一共240个整数。5个查询信息对应的份额区间为[0,29]、[30,89]、[90,129]、[130,159]、[160,239],每个区间大小对应为资源份额值大小。由于随机数发生器产生0-239每个整数概率是一样的,则资源份额大的查询信息,有更大概率被选中。如随机数发生器某次产生随机数为113,则命中[90,129]这个区间,则选中该队列中第3个查询信息,查询对应前端数据。确定“目标资源份额区间”即确定了查询信息。
[0040]
在一个示例性实施例中,向所述目标查询信息对应的目标前端发送第一数据请求之后,接收所述目标前端根据所述第一数据查询请求发送的第一查询数据;确定所述查询数据中是否存在所述目标前端对应的第二资源份额,其中,所述第二资源份额为所述目标前端根据所述目标前端的负载均衡信息计算得出的数值,所述第二资源份额与所述负载均衡信息为反比关系;在所述查询数据中存在所述目标前端对应的第二资源份额的情况下,将所述第一资源份额更新为所述第二资源份额。
[0041]
具体的,在前端支持资源份额计算的情况下,则在前端向nvr发送完整的查询数据的情况下,向nvr发送新的第二资源份额,需要说明的是,第二资源份额根据前端的负载、带宽利用率、io吞吐率等计算得出的,反映了前端的实时负载状况;在前端不支持资源份额计算的情况下,则在前端向nvr发送完整的查询数据的情况下,向nvr发送默认的资源份额50,即不修改前端的资源份额。
[0042]
上述步骤s206之后,还需要:确定所述所有查询数据的数量与所述第一队列的查询数据总量的大小关系;确定所述目标前端是否发送完所述目标前端对应的第二查询数据,其中,所述第二查询数据为所述目标前端对应的所有查询数据;在所述目标前端未发送完所述目标前端对应的第二查询数据的情况下,将所述第一查询数据的数据量和所述第一数据量进行相加,得到第二数据量。
[0043]
也就是说,当目标前端发送了一定数据量的查询数据之后,就降低目标前端优先级,即,将目标前端加入到第二队列,解决了相关技术中,在前端设备的数据量过大的情况下,会向同一个前端发送多次数据查询请求,进而影响前端设备的性能等问题,在所述大小关系指示所述所有查询数据的数量小于或等于所述查询数据总量的情况下,会继续将目标前端放在第一队列中,进而保证了对于数据量少的前端,尽快的查询完毕,减少了长时间占用前端的资源。
[0044]
换言之,每个队列会设置一个数据量值,队列中每个查询信息包含一个已发送的数据量,初始值置为0。每次查询结束,若所述目标前端已发送完所有查询数据,则删除该队列中前端对应的查询信息。否则,会将前端该次查询数据量加到已发送的数据量上,即每次发送结束时,更新查询信息中保存的已发送的数据量,若更新后的第二数据量大于该队列预设的数据量(每个队列会在初始化时指定一个该队列发送数据量阈值),则将该查询信息移动到下级队列中。若无下级队列,则不做移动处理。
[0045]
在一个示例性实施例中,确定所述目标前端已发送完所有查询数据,包括:在对目标前端的数据进行查询时,分多次查询,nvr每次查询会指定一个偏移量及查询数据条数信息,目标前端返回信息中会包含数据条数及偏移量值。例如:需要查询10000条数据,则目标前端每次查询会返回一个偏移量指明查询到了第几条数据(一次查询可以查询多条数据)。若偏移量到了10000,则表明不再需要向该目标前端查询数据。
[0046]
在一个示例性实施例中,根据队列优先级和队列状态在多级反馈队列中确定第一
队列之前,为所述nvr的多级反馈队列设置定时器;在所述定时器超时的情况下,将所述多级反馈队列中的第一前端的查询信息添加到所述多级反馈队列中的最高优先级队列,其中,所述第一前端用于指示在所述定时器的定时时间内未完成查询的前端。
[0047]
经过一段时间,即定时器超时后,将未查询完毕的前端以及未接收到数据请求的前端,重新加入最高优先级队列。该规则解决了nvr长时间不查询一个前端的数据的问题。定时器超时后会将未查询完毕的前端放入到最高优先级队列中,在最高优先级队列中,会与其他前端进行轮询的查询。
[0048]
需要说明的是,所有未查询完毕的前端均要放入到最高优先级队列中。即定时器超时时,全部在最高优先级队列中,前端的彩票值不变,前端的已发送数据量统计值置为0。
[0049]
在一个示例性实施例中,根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列之前或之后,在检测到第二前端接入到所述nvr的情况下,确定是否向所述第二前端发送第二数据请求;在确定向所述第二前端发送所述第二数据请求的情况下,将所述第二前端的查询信息设置在所述多级反馈队列中的最高优先级队列。
[0050]
也就是说,在第二前端刚接入nvr中时,且需要向第二前端发送第二数据请求的情况下,将第二前端的查询信息设置在所述多级反馈队列中的最高优先级队列,在第一队列为最该优先级队列的情况下,将第二前端的查询信息加入到第一队列中。
[0051]
在一个示例性实施例中,根据队列优先级和队列状态在多级反馈队列中确定第一队列,包括:获取多级反馈队列中每一级反馈队列的队列优先级和队列状态,其中,所述队列状态至少包括以下之一:空状态、非空状态;根据每一级反馈队列的队列状态在多级反馈队列中确定队列状态为非空状态的队列;在所述非空状态的队列中确定优先级最高的队列,并将所述优先级最高的队列作为所述第一队列。
[0052]
即本发明实施例中,首先通过队列状态在多个队列中确定非空状态的队列,然后在非空状态的队列中确定优先级最高的队列,以在所述多个队列中确定非空最高优先级队列,若所有队列为空,则定时检查是否有新的查询信息到来。
[0053]
为了更好的理解上述查询信息的处理方法的过程,以下再结合可选实施例对上述查询信息的处理的实现方法流程进行说明,但不用于限定本发明实施例的技术方案。
[0054]
在现有技术中,例如专利公开号为cn110503284a的专利,其设计要点是提供了一种基于排队数据的统计方法,该方法包括:接收基于排队数据的统计指令,所述统计指令中包括待统计时间段及待统计参数;获取所述待统计时间段对应的视频图像的排队数据,所述排队数据中包括:排队人员总数和/或排队人员的排队时间;基于所述待统计参数,对所获取的排队数据进行统计分析,生成统计结果。应用该基于排队数据的统计方法,可以根据用户的需求,获取视频图像中的排队数据,并对用户需求的排队数据进行统计分析,可以向用户提供更直观的统计结果。
[0055]
再例如专利公开号为cn111585915a的专利,其设计要点是公开了一种长、短流量均衡传输方法、系统、存储介质、云服务器,构建数据中心长、短流量均衡传输方法的深度强化学习架构;短流量实时性优化,依据基于强化学习的多级队列阈值优化方法改善交互性短流量传输延迟;利用决策概率选择传输策略,并初始化决策概率,根据概率执行已选择的传输策略;决策概率动态调整,用于迭代更新传输策略以适应数据中心流量类型变化,最终实现长、短流量均衡传输。
[0056]
公开号为cn110503284a的专利,其设计的主要缺点:并未考虑同时接入多个前端(设备)获取数据时,负载均衡的问题;专利公开号为cn111585915a的专利,其设计的主要是将多级反馈队列用于云存储中的长短流量控制中。而且现有技术中存在:在前端设备的数据量过大的情况下,会向同一个前端发送多次数据查询请求,进而影响前端设备的性能等问题。
[0057]
为了解决上述问题,在本实施例中提供了一种查询信息的处理方法,该查询信息的处理方法,基于以下原理:多级反馈队列(multi-level feedback queue,mlfq)和比例份额调度思想应用于nvr获取前端统计数据中,用于均衡前端发送大量数据时的负载,减轻前端数据发送的压力。
[0058]
mlfq多用于操作系统对进程调度中,将需要执行的查询信息放入不同等级的优先级队列中,其调度规则如下:
[0059]
规则1:如果a的优先级》b的优先级,运行a;
[0060]
规则2:如果a的优先级=b的优先级,轮转运行a和b;
[0061]
规则3:进程进入系统时,放在最高优先级队列中;
[0062]
规则4:一旦进程用完了其在某一层队列的配额,就降低进程的优先级,即移入低一级队列;
[0063]
规则5:经过一段时间s,将系统中所有进程重新加入最高优先级队列。
[0064]
比例份额调度:确保每个进程获取一定比例的cpu时间,为每个进程分配一个彩票数(相当于上述实施例中的资源份额),彩票数代表了进程占有某个资源的份额,分配资源时,按照彩票数份额进行分配。
[0065]
mlfq结合比例份额调度,对前端数据的查询,类比为进程的执行。本发明实施例对应的查询信息的处理规则如下:
[0066]
nvr内部设置多级反馈队列管理nvr向前端的数据查询,任何时刻某个查询信息只能存在于一个队列中。每个队列中的查询信息配置一个彩票值,如取值1-100,初始时设置一个默认值,如50。前端在单次根据数据请求发送查询数据的最后,根据前端自身的运行情况,计算出一个彩票值,并反馈给nvr。如压力较小则设置较大彩票值,这样nvr在进行调度时,有更大概率对该前端进行查询。反之,则设置较小彩票值,这样下次被查询的概率则较小。
[0067]
本发明实施例的mlfq规则如下:
[0068]
1、如果前端a对应的查询信息在队列中的优先级大于前端b对应的查询信息的优先级,则向前端a发送数据请求;
[0069]
2、利用比例份额调度方法对同一优先级中的前端进行调度,具体方法如下:
[0070]
a)前端上线时,给其设置一个默认的彩票值50,范围为[1,100]。若前端支持彩票值计算,则在向nvr发送完整的查询数据时,向nvr发送新的彩票值,该值根据自身负载、带宽利用率、io吞吐率等计算出,反映了前端实时状况。
[0071]
b)如前端不支持彩票值发送,则该轮数据发送结束时,向nvr发送默认的彩票值50。
[0072]
c)nvr接收到前端反馈的彩票值后,修改对其查询信息的彩票值。
[0073]
d)nvr在对一个队列进行调度时,先计算出队列内所有查询彩票值之和,然后通过
随机数发生器得到一个随机数,看随机数落入哪个前端彩票值所在区间,则查询对应前端数据。这样保证了彩票值大的前端,有更大的概率在下次查询中被选中。
[0074]
3、前端上线后,放在最高优先级队列中;
[0075]
4、在前端发送了一定数量的数据的情况下,就降低其优先级,即移入低一级队列,且在前端在此次查询中发送完了所有待查询数据时,将前端对应的查询信息从指定队列中移除。
[0076]
饥饿问题:如果有很多前端数据量较少,而有一个前端数据量很大,在数据量少前端所在优先级大于数据量多前端所在优先级或处于同一优先级队列时,数据量少前端比例份额值比较大,数据量多前端比例份额值小,则nvr会一直查询那些数据量少的前端,数据量大的前端数据不会查询(或在最后查询),可以通过规则5改善这种情况。
[0077]
5、经过一段时间s,将未查询完毕的前端(所有工作队列),重新加入最高优先级队列。该规则解决了nvr长时间不查询一个前端的数据的问题。经过时间s后,会将其放入到最高优先级队列中,在最高优先级队列中,会与其他前端进行轮询的查询。
[0078]
利用mlfq规则控制nvr查询前端的优先在于:对于数据量少的前端,可以较快的查询完全部数据;对于数据量大的前端,可以公平地、不给前端造成太大压力的情况下稳步地获取数据。
[0079]
图3是根据本发明实施例的查询信息的处理方法的示意图,如图3所示,具体如下步骤:
[0080]
步骤s301:开始;
[0081]
步骤s302:创建多级反馈队列,开启定时器(超时后将所有未完成查询的查询信息放入最高等级队列);
[0082]
需要说明的是,nvr确定查询控制的mlfq相关参数:
[0083]
a)队列个数;
[0084]
b)每层队列查询数据总量(相当于上述实施例中的预设数据量);
[0085]
c)前端对应的查询信息的默认彩票值;
[0086]
d)将所有查询放入最高优先级队列的时间间隔s;
[0087]
步骤s303:确定是否有第二前端接入,以及是否需要向第二前端发送数据请求,在确定有第二前端接入,且需要向第二前端发送查询请求(相当于上述实施例中的数据请求)的情况下,执行步骤s304,否则执行步骤s305;
[0088]
步骤s304:当有第二前端上线,需要向第二前端查询数据时,首先将第二前端,加入到最高优先级队列中,并为第二前端对应的查询信息配置一个默认的彩票值;
[0089]
步骤s305:确定是否有非空队列,在有非空队列的情况下,执行步骤s306,否则执行步骤s315;
[0090]
步骤s306:统计非空最高优先级队列中所有的彩票值之和ticket_sum,然后通过随机数发生器得到一个随机值,根据随机值落入的区间范围确定第一前端(相当于上述实施例中的目标前端),向第一前端发送查询请求;
[0091]
步骤s307:接收第一前端发送的该次查询请求的完整的查询数据;
[0092]
步骤s308:确定第一前端是否已发送完所有查询数据;若目标前端已发送完所有查询数据,执行步骤s316;若目标前端未发送完所有查询数据,执行步骤s309;
[0093]
步骤s309:统计第一前端在该等级队列中的发送量,如达到该级别队列的发送量阈值,则执行步骤s311;
[0094]
步骤s310:确定查询数据中是否有彩票值,如查询数据中有彩票值,则执行步骤s312,在查询数据中没有彩票值,执行步骤s313;
[0095]
步骤s311:降低第一前端对应的查询信息的优先级,移至下一级队列中;
[0096]
步骤s312:更新第一前端对应的查询信息的彩票值;
[0097]
步骤s313:将第一前端对应的查询信息的彩票值设为默认彩票值;
[0098]
在nvr进行下一次查询时,会总和最高优先级队列中前端的彩票值ticket_sum(彩票值可能更新或移动到下一级队列中),然后生成[0,ticket_sum)上的一个随机数,根据随机数落入的区间判断查询的前端。
[0099]
步骤s314:确定定时器是否超时,在定时器超时的情况下,执行步骤s314,否则执行步骤s303;
[0100]
步骤s315:将所有队列的查询信息转入最高优先级队列中;
[0101]
步骤s316:睡眠预设时长,执行步骤s303;
[0102]
步骤s317:将前端信息从队列中移出。
[0103]
本发明实施例,通过结合多级反馈队列(mlfq)规则和比例份额调度思想,结合前端实时负载,调整向前端查询数据的时机,实现前端发送数据的负载均衡,减轻前端发送数据的压力;nvr维护一个多等级的队列,优先选择高等级队列中的前端进行数据查询,同等级队列中前端根据比例份额调度的思想进行选择,并按一定规则调整各个队列中元素;首先总和该队列所有前端的彩票值,然后生成随机数,根据随机数落入的区间选择前端进行查询。前端发送自身状态相关的彩票值给nvr,下次查询时,nvr根据新的彩票值进行调度,彩票值高的前端有更大概率被查询;有前端上线需要查询数据时,进入最高优先级队列,且为该前端配置一个默认的彩票值。若前端已经在队列发送了指定量的数据,则将其降低一个等级,移入下一个等级队列中;为了保证向所有前端查询数据的均衡性,一段时间后,所有队列中未结束的查询统一放入最高优先级队列中。
[0104]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
[0105]
在本实施例中还提供了查询信息的处理装置,该查询信息的处理装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0106]
图4是根据本发明实施例的一种查询信息的处理装置的结构框图;如图4所示,包括:
[0107]
第一确定模块42,用于根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对
接的前端所对应的查询信息、所述查询信息对应的第一资源份额;
[0108]
发送模块44,用于根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;
[0109]
第二确定模块46,用于在所述nvr接收到所述目标前端根据所述第一数据请求发送的第一查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;
[0110]
更新模块48,用于在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,其中,所述第二队列的优先级小于第一队列。
[0111]
通过上述装置,根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对接的前端所对应的查询信息、所述查询信息对应的第一资源份额、所述前端在所述第一队列中已发送的第一数据量;根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;在nvr接收到所述目标前端根据所述第一数据请求发送的第一查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,其中,所述第二队列的优先级小于第一队列;采用上述技术方案,解决了在前端设备的数据量过大的情况下,会连续不断向同一个前端发送多次数据查询请求,进而影响前端设备的性能等问题,通过为多级反馈队列分配资源份额,根据资源份额向目标前端发送数据请求,以及在所述目标前端根据数据请求发送完所有查询数据的情况下,将目标前端加入第二队列,兼顾了前端的状态进行查询,能均衡前端发送查询数据的压力,也可以在对接多个前端时,均衡对前端的查询,平衡了对前端的查询压力,进而提高了前端设备的性能。
[0112]
在一个示例性实施例中,发送模块,还用于根据所述多个查询信息所分别对应的第一资源份额和所述nvr中的随机数生成器生成的随机数从所述多个查询信息中确定目标查询信息。
[0113]
在一个示例性实施例中,发送模块,还用于根据所述多个查询信息所分别对应的第一资源份额确定所述第一队列的资源份额和;在所述随机数生成器根据所述资源份额和生成所述随机数的情况下,确定所述随机数对应的目标份额区间,其中,所述多个查询信息分别对应有不同的份额区间;将所述目标份额区间对应的查询信息作为所述目标查询信息。
[0114]
在一个示例性实施例中,更新模块,还用于接收所述目标前端根据所述第一数据查询请求发送的第一查询数据;确定所述查询数据中是否存在所述目标前端对应的第二资源份额,其中,所述第二资源份额为所述目标前端根据所述目标前端的负载均衡信息计算得出的数值,所述第二资源份额与所述负载均衡信息为反比关系;在所述查询数据中存在所述目标前端对应的第二资源份额的情况下,将所述第一资源份额更新为所述第二资源份额。
[0115]
在一个示例性实施例中,第二确定模块,还用于确定所述目标前端是否发送完所述目标前端对应的第二查询数据,其中,所述第二查询数据为所述目标前端对应的所有查询数据;在所述目标前端未发送完所述目标前端对应的第二查询数据的情况下,将所述第一查询数据的数据量和所述第一数据量进行相加,得到第二数据量。
[0116]
在一个示例性实施例中,第一确定模块,还用于为所述nvr的多级反馈队列设置定时器;在所述定时器超时的情况下,将所述多级反馈队列中的第一前端的查询信息添加到所述多级反馈队列中的最高优先级队列,其中,所述第一前端用于指示在所述定时器的定时时间内未完成查询的前端。
[0117]
在一个示例性实施例中,第一确定模块,还用于在检测到第二前端接入到所述nvr的情况下,确定是否向所述第二前端发送第二数据请求;在确定向所述第二前端发送所述第二数据请求的情况下,将所述第二前端的查询信息设置在所述多级反馈队列中的最高优先级队列。
[0118]
在一个示例性实施例中,第一确定模块,还用于获取多级反馈队列中每一级反馈队列的队列优先级和队列状态,其中,所述队列状态至少包括以下之一:空状态、非空状态;根据每一级反馈队列的队列状态在多级反馈队列中确定队列状态为非空状态的队列;在所述非空状态的队列中确定优先级最高的队列,并将所述优先级最高的队列作为所述第一队列。
[0119]
本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
[0120]
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
[0121]
s1,根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对接的前端所对应的查询信息、所述查询信息对应的第一资源份额;
[0122]
s2,根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;
[0123]
s3,在所述目标前端根据所述第一数据请求发送完所有查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;
[0124]
s4,在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,其中,所述第二队列的优先级小于第一队列。
[0125]
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0126]
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0127]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0128]
s1,根据队列优先级和队列状态在nvr设置的多级反馈队列中确定第一队列,其中,所述第一队列为非空最高等级队列,所述第一队列中包括:所述nvr对接的前端所对应的查询信息、所述查询信息对应的第一资源份额;
[0129]
s2,根据所述第一资源份额在所述第一队列的多个查询信息中确定目标查询信息,并向所述目标查询信息对应的目标前端发送第一数据请求;
[0130]
s3,在所述目标前端根据所述第一数据请求发送完所有查询数据的情况下,确定所述目标前端在所述第一队列中已发送的第二数据量;
[0131]
s4,在所述第二数据量大于所述第一队列的预设数据量的情况下,将所述目标查询信息加入第二队列,其中,所述第二队列的优先级小于第一队列。
[0132]
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0133]
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0134]
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0135]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1