发明内容
本发明的目的在于提供一种消息队列的动态调度方法及装置,旨在提高数据处理的时效性。
为了实现上述目的,本发明提供以下技术方案:
一种消息队列的动态调度方法,包括:
建立多组消息队列,按QoS级别对所述多组消息队列进行排序,并生成排序列表;
获取报文的QoS级别,根据所述报文的QoS级别确定其所属的消息队列;
对同一消息队列中的报文按时间顺序进行排序;
根据剩余空间对多组所述消息队列进行处理。
进一步,当剩余空间不足时,按顺序对多组所述消息队列执行处理,直到每组所述消息队列中所有消息被成功处理。
进一步,当剩余空间足够时,对多组所述消息队列进行并行处理,直到每组所述消息队列中所有消息被成功处理。
进一步,所述方法还包括:
根据处理结果记录消息的消息状态和重试次数,所述处理结果包括初始状态、成功、异常;
按排序列表中的顺序识别消息队列的处理结果,将处理结果为异常的消息作为异常消息;
获取所述异常消息的重处理次数,按所述重处理次数降低所述异常消息在排序列表中的排序,并更新排序列表。
进一步,当所述重试次数超过设定阈值时,则丢弃对应的异常消息。
一种消息队列的动态调度装置,所述装置包括:
队列排序模块,用于建立多组消息队列,按QoS级别对所述多组消息队列进行排序,并生成排序列表;
级别确定模块,用于获取报文的QoS级别,根据所述报文的QoS级别确定其所属的消息队列;
报文排序模块,用于对同一消息队列中的报文按时间顺序进行排序;
消息队处理模块,用于根据剩余空间对多组所述消息队列进行处理。
进一步,所述报文排序模块用于:当剩余空间不足时,按顺序对多组所述消息队列执行处理,直到每组所述消息队列中所有消息被成功处理。
进一步,所述报文排序模块用于:当剩余空间足够时,对多组所述消息队列进行并行处理,直到每组所述消息队列中所有消息被成功处理。
进一步,所述装置还包括排序更新模块,所述排序更新模块包括:
记录模块,用于根据处理结果记录消息的消息状态和重试次数,所述处理结果包括初始状态、成功、异常;
识别模块,用于按排序列表中的顺序识别消息队列的处理结果,将处理结果为异常的消息作为异常消息;
重排序模块,用于获取所述异常消息的重处理次数,按所述重处理次数降低所述异常消息在排序列表中的排序。
进一步,所述重排序模块还用于:当所述重试次数超过设定阈值时,则丢弃对应的异常消息。
本发明的有益效果是:本发明公开一种消息队列的动态调度方法及装置,首先建立多组消息队列,按QoS级别对所述多组消息队列进行排序,并生成排序列表,接着获取报文的QoS级别,根据所述报文的QoS级别确定其所属的消息队列,进而对同一消息队列中的报文按时间顺序进行排序,并根据剩余空间对多组所述消息队列进行处理。本发明提高了数据处理的时效性。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所以其他实施例,都属于本发明的保护范围。
参考图1,图1为本发明实施例提供的一种消息队列的动态调度方法,包括以下步骤:
步骤S100、建立多组消息队列,按QoS级别对所述多组消息队列进行排序,并生成排序列表;
步骤S200、获取报文的QoS级别,根据所述报文的QoS级别确定其所属的消息队列;
步骤S300、对同一消息队列中的报文按时间顺序进行排序;
步骤S400、根据剩余空间对多组所述消息队列进行处理。
本实施例所述的QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。QoS的保证对于容量有限的网络来说是十分重要的,例如本公开中的自动化生产领域,因为要实现自动化生产控制常常需要固定的传输率,对延时也比较敏感。
当网络发生拥塞的时候,所有的数据流都有可能被丢弃;为满足用户对不同应用不同服务质量的要求,就需要网络能根据用户的要求分配和调度资源,对不同的数据流提供不同的服务质量;对实时性强且重要的数据报文优先处理,对于实时性不强的普通数据报文,提供较低的处理优先级,网络拥塞时甚至丢弃。QoS应运而生。支持QoS功能的设备,能够提供传输品质服务;针对各种类别的数据流,可以赋予相应级别的传输优先级,来标识各自的相对重要性,并使用设备所提供的各种优先级转发策略、拥塞避免等机制为这些数据流提供特殊的传输服务。配置了QoS的网络环境,增加了网络性能的可预知性,并能够有效地分配网络带宽,更加合理地利用网络资源。在本实施例中提供的QOS服务为三种级别,分别为:尽力转发型、区分服务型、和确认服务型。
本公开提供的实施例首先建立多组消息队列,按QoS级别对所述多组消息队列进行排序,并生成排序列表,初步对消息队列按优先级进行排序,进而获取报文的QoS级别,根据所述报文的QoS级别确定其所属的消息队列,对按QoS级别对报文进行归类,并进一步对同一消息队列中的报文按时间顺序进行排序,从而形成了整个消息队列的调度顺序;最后,根据剩余空间对多组所述消息队列进行处理,本领域技术人员清楚,所述剩余空间,是指空闲的网络容量。将剩余空间作为处理顺序的判断依据,从而在多个流程上提高了数据处理的时效性。
参考图2,作为本实施例的进一步改进,所述步骤S400包括以下步骤:
步骤S410、获取剩余空间。
步骤S420、判断剩余空间是否达到阈值,若是,执行步骤S430,若否,执行步骤S440;
步骤S430、对多组所述消息队列进行并行处理,直到每组所述消息队列中所有消息被成功处理。
通过对多组所述消息队列进行并行处理,有效利用剩余空间的处理能力,提高数据处理的时效性。
步骤S440、按顺序对多组所述消息队列执行处理,直到每组所述消息队列中所有消息被成功处理。
上述技术方案中,调度器按照优先级调度策略决定哪个调度队列中的访问请求得到访问存储空间的访问授权。但是采用该调度方式,当高优先访问请求的数据发生异常的情况下,依然会继续对其进行处理,导致低优先级访问请求的数据因为优先级较低而无法被处理,从而易产生调度原因造成的访问请求阻塞,最终影响存储系统的整体性能。
参考图3,作为上述实施例的进一步改进,所述步骤S400之后,还包括以下步骤:
步骤S510、根据处理结果记录消息的消息状态和重试次数。其中,所述处理结果包括初始状态、成功、异常。
步骤S520、按排序列表中的顺序识别消息队列的处理结果,将处理结果为异常的消息作为异常消息;
步骤S530、获取所述异常消息的重处理次数,按所述重处理次数降低所述异常消息在排序列表中的排序,并更新排序列表。
相应的,在步骤S530之后,跳转到步骤S100。
本实施例可以避免低优先级访问请求的数据因为优先级较低而无法被处理,以及由此产生的访问请求阻塞,最终保证数据处理的时效性。
作为上述实施例的进一步改进,当所述重试次数超过设定阈值时,则丢弃对应的异常消息。
参考图4,本实施例还提供一种消息队列的动态调度装置,所述装置包括:
队列排序模块100,用于建立多组消息队列,按QoS级别对所述多组消息队列进行排序,并生成排序列表;
级别确定模块200,用于获取报文的QoS级别,根据所述报文的QoS级别确定其所属的消息队列;
报文排序模块300,用于对同一消息队列中的报文按时间顺序进行排序;
消息队处理模块400,用于根据剩余空间对多组所述消息队列进行处理。
作为上述实施例的进一步改进,所述消息队处理模块400用于:当剩余空间不足时,按顺序对多组所述消息队列执行处理,直到每组所述消息队列中所有消息被成功处理。
作为上述实施例的进一步改进,所述消息队处理模块400用于:当剩余空间足够时,对多组所述消息队列进行并行处理,直到每组所述消息队列中所有消息被成功处理。
参考图5,作为上述实施例的进一步改进,还包括排序更新模块,所述排序更新模块包括:
记录模块510,用于根据处理结果记录消息的消息状态和重试次数,所述处理结果包括初始状态、成功、异常;
识别模块520,用于按排序列表中的顺序识别消息队列的处理结果,将处理结果为异常的消息作为异常消息;
重排序模块530,用于获取所述异常消息的重处理次数,按所述重处理次数降低所述异常消息在排序列表中的排序。
在一个实施例中,所述重排序模块还用于:当所述重试次数超过设定阈值时,则丢弃对应的异常消息。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是计算机,服务器等)执行本发明各个实施例所述的方法。
尽管本公开的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本公开的预定范围。