CN109150753B - 消息分发方法及装置 - Google Patents
消息分发方法及装置 Download PDFInfo
- Publication number
- CN109150753B CN109150753B CN201810866203.7A CN201810866203A CN109150753B CN 109150753 B CN109150753 B CN 109150753B CN 201810866203 A CN201810866203 A CN 201810866203A CN 109150753 B CN109150753 B CN 109150753B
- Authority
- CN
- China
- Prior art keywords
- queue
- message
- messages
- sub
- vnf
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及消息分发方法及装置,包括获取待分配队列的第一消息;在所述第一消息加入处于可用状态的第一队列后,若所述第一队列中消息的数量为指定数量,则确定所述第一队列中当前正在被处理的当前消息对应的当前VNF,在所述可用状态下,分配至所述第一队列的消息均能够加入所述第一队列;将所述第一队列中所述当前VNF的消息保留在所述第一队列中进行处理,并为所述第一队列中除所述当前VNF以外的VNF的消息重新进行队列分配。通过将导致第一队列阻塞的VNF的消息仍保留在第一队列中进行处理,其他VNF的消息重新分配至其他队列进行处理,根据本公开实施例的消息分发方法及装置能够减少异常影响范围,提高消息队列的容错性。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种消息分发方法及装置。
背景技术
VNF(Virtualization Network Function,虚拟化网络功能节点)管理器是符合ETSI(European Telecommunications Standards Institute,欧洲电信标准协会)规范的NFV(Network Function Virtualization,网络功能虚拟化)部署、配置及管理软件,可以管理多台物理服务器,根据用户业务需求灵活计算所需的资源,完成VNF的创建和部署,同时将所需要的初始配置下发至VNF,确保VNF启动后,管理平台能够远程管理。VNF管理器是管理平台与VNF的消息中枢,负责了所有VNF消息的分发。
VNF管理器和VNF所处的环境是复杂多变的,不同VNF对信息的响应速度也是不同的,同时VNF管理器所下挂的VNF的数量可能是巨大的。VNF管理器通过引入消息队列来实现消息的分发,实现稳定、高效管理VNF的目的。
相关技术中,可以维护一个固定数量的消息队列,通过对每个VNF的IP地址的哈希值进行取模运算来确定VNF对应的消息队列序号,从而将各VNF的消息分发至对应消息队列。隶属于同一队列的消息按序处理,前序消息处理较慢(包括网络阻塞或者VNF异常等情况)时会阻塞队列中所有后续消息,容错性较差。
发明内容
有鉴于此,本公开提出了一种消息分发方法及装置,能够提高消息队列的容错性。
根据本公开的第一方面,提供了一种消息分发方法,包括:获取待分配队列的第一消息;在所述第一消息加入处于可用状态的第一队列后,若所述第一队列中消息的数量为指定数量,则确定所述第一队列中当前正在被处理的当前消息对应的当前虚拟化网络功能节点VNF,其中,在所述可用状态下,分配至所述第一队列的消息均能够加入所述第一队列;将所述第一队列中所述当前VNF的消息保留在所述第一队列中进行处理,并为所述第一队列中除所述当前VNF以外的VNF的消息重新进行队列分配。
根据本公开的第二方面,提供了一种消息分发装置,包括:消息获取模块,用于获取待分配队列的第一消息;VNF确定模块,用于在所述第一消息加入处于可用状态的第一队列后,若所述第一队列中消息的数量为指定数量,则确定所述第一队列中当前正在被处理的当前消息对应的当前虚拟化网络功能节点VNF,其中,在所述可用状态下,分配至所述第一队列的消息均能够加入所述第一队列;消息分配模块,用于将所述第一队列中所述当前VNF的消息保留在所述第一队列中进行处理,并为所述第一队列中除所述当前VNF以外的VNF的消息重新进行队列分配。
根据本公开的第三方面,提供了一种消息分发装置,包括:处理器;用于存储处理器可执行指令的机器可读存储介质;其中,所述处理器被配置为执行上述第一方面的方法。
根据本公开的第四方面,提供了一种机器可读存储介质,其上储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述第一方面的方法。
在本公开实施例中,在第一消息加入处于可用状态的第一队列后,若所述第一队列中消息的数量为指定数量,则确定第一队列当中正在处理的当前消息对应的当前VNF,将所述第一队列中当前VNF的消息保留在所述第一队列中进行处理,并为第一队列中除当前VNF以外的VNF的消息重新进行队列分配,这样,导致第一队列阻塞的VNF的消息仍保留在第一队列中进行处理,其他VNF的消息重新分配至其他队列进行处理,可以减少出现异常的当前VNF对其他队列造成的影响,以及对同一队列中其他VNF的消息造成的影响,能够有效减少异常影响范围,提高消息队列的容错性。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的消息分发方法的流程图。
图2示出根据本公开一实施例的消息分发方法的流程图。
图3示出根据本公开一实施例的消息分发方法的流程图。
图4示出根据本公开一实施例的消息分发方法的流程图。
图5示出根据本公开一实施例的消息分发方法的流程图。
图6示出根据本公开一实施例的消息分发方法的流程图。
图7示出根据本公开一实施例的消息分发方法的流程图。
图8示出根据本公开一实施例的消息分发方法的流程图。
图9示出根据本公开实施例一个示例性的队列***示意图。
图10示出根据本公开一实施例的消息分发方法的流程图。
图11示出根据本公开一实施例的消息分发装置的框图。
图12示出根据本公开一实施例的消息分发装置的框图。
图13是根据一示例性实施例示出的一种用于消息分发装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的消息分发方法的流程图。该方法可以应用于VNF管理器。如图1所示,该消息分发方法可包括:
步骤S101,获取待分配队列的第一消息。
VNF管理器是管理平台与VNF的消息中枢。队列可以用以缓存VNF管理器下发给VNF的消息。其中,VNF管理器可以下挂大量VNF,VNF管理器可以为各VNF的消息分配队列,各队列按照消息进入队列的顺序依次处理队列中的消息。
本公开中的虚拟化网络功能节点VNF可以包括虚拟机VM(Virtual Machine)、虚拟路由器(Virtual Services Router)、虚拟交换机(Virtual Switch)、虚拟安全网关VSG((Virtual_Security_Gateway)中的任意一个或多个。当然VNF也可以是其他的虚拟化的网络功能节点,这里只是示例性的给出,但不以此作为限制。第一消息可以表示待分配队列的消息。在一种可能的实现方式中,第一消息包括首次进行队列分配的消息和/或重新进行队列分配的消息。其中,重新进行队列分配的消息可以为下述步骤S103中的重新进行队列分配的消息。
步骤S102,在所述第一消息加入处于可用状态的第一队列后,若所述第一队列中消息的数量为指定数量,则确定所述第一队列中当前正在被处理的当前消息对应的当前VNF,其中,在所述可用状态下,分配至所述第一队列的消息均能够加入所述第一队列。第一队列可以用于表示VNF管理器为第一消息分配的队列。第一队列处于可用状态时,分配至第一队列的消息均能够加入第一队列。也就是说,当VNF管理器将第一消息分配至第一队列时,若第一队列处于可用状态,则第一消息可以加入第一队列。
第一队列中能够加入的消息的数量是有限的,在本公开实施例中,第一队列对应的指定数量用来确定第一队列是否发生了阻塞;当第一队列中消息的数量达到指定数量时,可以确定第一队列发生了阻塞;当第一队列中消息的数量未达到指定数量时,可以确定第一队列没有发生阻塞。其中,指定数量可以根据需要进行确定。在一个示例中,第一队列对应的指定数量可以为第一队列的最大容量,即第一队列最多能够加入的消息的数量。
在一种可能的实现方式中,在第一消息加入处于可用状态的第一队列后,VNF管理器可以确定第一队列中的消息的数量是否为指定数量,且在第一队列中消息的数量为指定数量时,获取第一队列中当前正在被处理的当前消息对应的当前VNF。
其中,第一队列的当前消息可以表示VNF管理器确定第一队列中消息的数量为指定数量时,第一队列中当前正在被处理的消息。第一队列的当前VNF可以表示第一队列的当前消息对应的VNF。在同一个队列中的消息会按照进入该队列的顺序处理,前序消息处理较慢时,会阻塞队列中所有后续的消息,使队列中后续消息无法处理。由于第一队列的当前消息是第一队列中排序最靠前的消息,因此第一队列的阻塞是由于当前消息处理较慢造成的。
步骤S103,将所述第一队列中所述当前VNF的消息保留在所述第一队列中进行处理,并为所述第一队列中除所述当前VNF以外的VNF的消息重新进行队列分配。
当前VNF出现异常(包括网络阻塞或者该VNF异常等情况)时,可能造成当前消息处理较慢,从而导致第一队列阻塞。这种情况下,当前VNF的消息都可能处理较慢,这些消息在其他队列中也可能会造成队列阻塞。因此,在本公开实施例中,VNF管理器可以将所述第一队列中当前VNF的消息保留在所述第一队列中进行处理,以减少对其他队列的影响,减小异常影响范围。同时,在本公开实施例中,VNF管理器可以为第一队列中除当前VNF以外的其他VNF的消息重新进行队列分配,以避免当前VNF的消息阻塞其他VNF的消息,减少对其他VNF的消息的影响,减小异常影响范围。
在本公开实施例中,通过将导致第一队列阻塞的当前VNF的消息仍保留在第一队列中进行处理,将其他VNF的消息重新分配至其他队列进行处理,可以减少出现异常的当前VNF的消息对其他队列造成的影响,以及对同一队列中其他VNF的消息造成的影响,从而减少异常影响范围,提高消息队列的容错性。
图2示出根据本公开一实施例的消息分发方法的流程图。如图2所示,该方法还可包括:
步骤S104,在确定所述第一队列中消息的数量为指定数量时,将所述第一队列的状态设置为异常状态,其中,在所述异常状态下,分配至所述第一队列的消息中所述当前VNF的消息能够加入所述第一队列,除所述当前VNF以外的VNF的消息不能加入所述第一队列。
第一队列中消息的数量为指定数量,表明第一队列发生了阻塞,当前VNF出现了异常。第一队列处于异常状态时,分配至第一队列的消息中当前VNF的消息能够加入第一队列,除当前VNF以外的VNF的消息不能加入第一队列。因此,VNF管理器在确定所述第一队列中消息的数量为指定数量时,可以将所述第一队列的状态设置为异常状态,以使得第一队列不可以加入除当前VNF以外的其他VNF的消息,从而达到隔离异常VNF的消息的目的。
另外,当前VNF出现异常的情况下,VNF管理器将所述第一队列中当前VNF的消息保留在所述第一队列中进行处理,并允许分配至第一队列的当前VNF的消息加入所述第一队列,这样能够保证异常VNF的消息(包括新加入的当前VNF的消息和第一队列中现有的当前VNF的消息)的有序性。
图3示出根据本公开一实施例的消息分发方法的流程图。如图3所示,该方法还可包括:
步骤S105,在处于异常状态的第一队列中的消息处理完成后,将所述第一队列的状态设置为初始状态,其中,在所述初始状态下,分配至所述第一队列的消息均不能加入所述第一队列。
处于异常状态的第一队列能够用来处理当前VNF的消息,处于异常状态的第一队列中的消息处理完成表明当前VNF的消息已经处理完成,此时不需要继续使用第一队列隔离当前VNF的消息。因此,在处于异常状态的第一队列中的消息处理完成后,VNF管理器可以将第一队列的状态设置为初始状态,以便于后续使用。
图4示出根据本公开一实施例的消息分发方法的流程图。如图4所示,在步骤S101获取待分配队列的第一消息之后,该方法还可包括:
步骤S106,根据所述第一消息对应的VNF的IP地址和当前队列的数量,确定所述第一消息的第一队列。
VNF管理器在获取到待分配队列的第一消息时,需要分配处理第一消息的队列。在本公开实施例中,VNF管理器可以根据第一消息对应的VNF的IP地址和当前队列的数量,确定第一消息的第一队列。
在一种可能的实现方式中,可以将VNF的消息采用key-value(关键字-值)的形成存储于队列中,并采用公式N=key%slot_num计算该消息的第一队列的序号N。其中,key为VNF的IP地址的哈希值,可以记为key=Hash(IP),value为VNF的消息,slot_num为当前队列的数量,%表示取模运算。VNF管理器可以根据所述第一消息对应的VNF的IP地址和当前队列的数量,通过上述公式确定第一消息的第一队列的序号,进而确定第一消息的第一队列。
在一个示例中,假设第一消息的key为5,当前队列的数量slot_num为4(包括队列0、队列1、队列2和队列3),则根据公式N=key%slot_num,可以确定第一队列的需要为5%4=1,表示队列1为第一队列。
步骤S107,在所述第一队列处于可用状态时,将所述第一消息加入所述第一队列中。
由于所有消息均能够加入处于可用状态的第一队列,因此在所述第一队列处于可用状态时,VNF管理器可以将所述第一消息加入所述第一队列中。
在本公开实施例中,在没有异常情况出现时,第一消息加入第一队列之前,相较于相关技术中的静态队列仅增加了一次状态判断,可以保证高效性。
图5示出根据本公开一实施例的消息分发方法的流程图。如图5所示,在步骤S106根据所述第一消息对应的VNF的IP地址和当前队列的数量,确定所述第一消息的第一队列之后,该方法还可包括:
步骤S108,在所述第一队列处于异常状态且所述第一队列的当前消息与所述第一消息对应于相同的VNF时,将所述第一消息加入所述第一队列中。
由于第一队列处于异常状态时,与所述当前消息对应于相同VNF的消息能够加入所述第一队列,且与所述当前消息对应于不同VNF的消息不能加入所述第一队列,因此在第一队列处于异常状态且所述第一队列的当前消息与所述第一消息对应于相同的VNF时,VNF管理器可以将第一消息加入所述第一队列中。
在第一队列处于异常状态表明第一队列发生了阻塞,所述第一队列的当前消息与所述第一消息对应于相同的VNF表明第一消息为异常VNF的消息,VNF管理器将第一消息加入所述第一队列中,可以将异常VNF的消息进行隔离,减少异常影响范围。
图6示出根据本公开一实施例的消息分发方法的流程图。如图6所示,在步骤S106根据所述第一消息对应的VNF的IP地址和当前队列的数量,确定所述第一消息的第一队列之后,该方法还可包括:
步骤S109,在所述第一队列处于异常状态且所述第一队列的当前消息与所述第一消息对应于不同的VNF,或者,所述第一队列为处于初始状态时,在所述第一队列的循环子队列中查找所述第一消息的第二队列,其中,所述第一队列的序号与所述循环子队列的序号的差值为初始队列的数量。
步骤S110,将所述第一消息加入所述第二队列中。
第二队列可以表示第一队列的循环子队列中第一消息能够加入的一个队列。其中,第一队列的循环子队列的序号与第一队列的序号的差值为初始队列的数量。在一个示例中,假设初始队列的数量init_slot_num为4,第一队列的序号为6,则序号为2的队列和序号为10的队列均可以称为第一队列的循环子队列,第二队列为这两个队列中第一消息能够加入的一个队列。
第一队列处于异常状态且第一队列的当前消息与所述第一消息对应于不同的VNF时,第一消息不能加入第一队列。第一队列处于初始状态时,第一消息同样不能加入第一队列。此时,VNF管理器可以在第一队列的循环子队列中查找第一消息的第二队列,并在找到第二队列后,将第一消息加入第二队列中。
在一种可能的实现方式中,在所述第一队列的循环子队列中查找所述第一消息的第二队列,包括:
在所述第一队列的循环子队列中查找异常子队列,所述异常子队列为处于异常状态的循环子队列,且所述异常子队列的当前消息与所述第一消息对应于相同的VNF;若在所述第一队列的循环子队列中查找到所述异常子队列,则将所述异常子队列确定为所述第二队列;
若在所述第一队列的循环子队列中未查找到所述异常子队列,则在所述第一队列的循环子队列中查找可用子队列,所述可用子队列为处于可用状态的循环子队列;若在所述第一队列的循环子队列查找到所述可用子队列,则将首个找到的可用子队列确定为所述第二队列;若在所述第一队列的循环子队列中未查找到所述可用子队列,则在所述第一队列的循环子队列中查找初始子队列,所述初始子队列为处于初始状态的循环子队列;将首个找到的初始子队列的状态设置为可用状态、并确定为所述第二队列。
其中,异常子队列为处于异常状态的循环子队列,且所述异常子队列的当前消息与所述第一消息对应于相同的VNF。异常子队列的当前消息与所述第一消息对应于相同的VNF时,表明第一消息为异常VNF的消息,将第一消息加入该异常子队列可以将异常VNF的消息隔离出来,从而减小影响范围。
可用子队列为处于可用状态的循环子队列。在未查找到满足条件的异常子队列时,表明第一消息为正常VNF的消息,此时VNF管理器可以将第一消息加入可用子队列。
初始子队列为处于初始状态的循环子队列。在未查找到可用子队列时,表明第一消息不能加入已启用的循环子队列,此时VNF管理器可以将第一消息加入首个找到的初始子队列的状态设置为可用状态,以将第一消息加入该循环子队列。参照步骤S105可知,在处于异常状态的队列中的消息处理完成后,该队列的状态变为初始状态。参照后续步骤S112可知,触发队列***时,新产生的队列的状态为初始状态。
需要说明的是,在触发新的队列***之前,对应于同一VNF的不同消息(包括首次进行队列分配的消息和重新进行队列分配的消息)的第一队列相同、循环子队列相同,第二队列也相同,这样可以保证同一VNF的不同消息的有序性。
图7示出根据本公开一实施例的消息分发方法的流程图。如图7所示,该方法还可包括:
步骤S111,若所述第一队列的循环子队列中不存在所述第二队列,则触发队列***。
当第一队列的循环子队列中不存在第二队列时,表明当前不存在第一消息能够加入的队列,为了对第一消息进行正常处理,VNF管理器可以通过触发队列***,生成新的队列,以便于将第一消息加入新生成的队列中进行处理。
图8示出根据本公开一实施例的消息分发方法的流程图。如图8所示,该方法还可包括:
步骤S112,在触发队列***时,对每个现有的队列***生成一个对应的子代队列,每个现有的队列和对应的子代队列互为循环子队列,其中,***生成的子代队列的默认状态被设置为初始状态。
在一个示例中,假设触发队列***之前,现有队列包括队列0和队列1。在触发队列***时,对队列0生成一个子代队列并记为队列2,对队列1生成一个子代队列并记为队列3。队列0和队列2互为循环子队列,队列1和队列3互为循环子队列。队列2和队列3的默认状态被设置为初始状态。
应用示例
图9示出根据本公开实施例一个示例性的队列***示意图。如图9所示,触发队列***之前,当前队列的数量slot_num为4,现有队列包括队列0、队列1、队列2和队列3。触发队列***之后,当前队列的数量slot_num为8,现有队列包括队列0、队列1、队列2、队列3、队列4、队列5、队列6和队列7。队列0中存在3个消息,依次为key=20的消息、key=12的消息和key=12消息。若key=20的消息加入队列0后,发现队列0的消息数量大于指定数量,则将队列0设置为异常状态。此时,队列0中正在被处理的消息为key为20的消息,VNF管理器为key不为20的消息重新进行队列分配,并在无法找到可用的队列时,触发***,并在***后为key为12的两个消息重新进行队列分配。重新分配时,队列的数量slot_num=4*2=8,新的第一队列的序号N=12%8=4。这样,队列0被隔离,有效控制了key=20的消息的影响范围。
另外,根据本公开实施例的消息分发方法,通过触发队列***,能够使50%的消息直接命中新生成的队列,进而加入新生成的队列,从而能够进一步提升处理效率。
举例来说,如图9所示,假设触发队列***之前,当前队列的数量slot_num为4,现有队列包括队列0、队列1、队列2和队列3。触发队列***之后,当前队列的数量slot_num为8,现有队列包括队列0、队列1、队列2、队列3、队列4、队列5、队列6和队列7。
假设消息n的key为4的n-1次方,以消息1的key为4,消息2的key为8,消息3的key为12,消息4的key为16为例进行说明。在触发***之前,消息1的第一队列的序号N=4%4=0,消息2的第一队列的序号N=8%4=0,消息3的第一队列的序号N=12%4=0,以及消息4的第一队列的序号N=16%4=0。当key=20的消息加入序号为0的队列后,该队列中消息的数量为指定数量,则序号为0的队列中除key=20的消息以外的消息(例如消息1、消息2、消息3和消息4)重新进行队列分配。若此时无法为这些消息找到可用的队列,则触发队列分配。在触发***之后,消息1的第一队列的序号N=4%8=4,消息2的第一队列的序号N=8%8=0,消息3的第一队列的序号N=12%8=4,消息4的第一队列的序号N=16%8=0。由此可见,消息1和消息3可以直接命中新生成的队列4,消息2和消息4会命中原有的队列0。依次类推,可以确定通过触发队列***,能够使50%的消息直接命中新生成的队列,进而加入新生成的队列,从而进一步提高处理效率。
图10示出根据本公开一实施例的消息分发方法的流程图。如图10所示,步骤S103中将所述第一队列中所述当前VNF的消息保留在所述第一队列中进行处理,并为所述第一队列中除所述当前VNF以外的VNF的消息重新进行队列分配包括:
步骤S1031,将所述第一队列中所述当前VNF的消息保留在所述第一队列中进行处理,并将所述第一队列中除所述当前VNF以外的VNF的消息作为第一消息。
在步骤S1031之后,VNF通过步骤S101可以获取第一队列中除所述当前VNF以外的VNF的消息,并通过图1至图7所示的消息分发方法中的一个,对第一队列中除所述当前VNF以外的VNF的消息进行队列分配。
在本公开实施例中,步骤S103中VNF管理器为第一队列中除所述当前VNF以外的VNF的消息重新进行队列分配时,可以将这些消息作为第一消息进行队列分配。VNF管理器在为消息重新进行队列分配的过程与为消息首次进行队列分配的过程相同。VNF管理器将所述第一队列中除所述当前VNF以外的VNF的消息作为第一消息之后,VNF管理器可以执行步骤S101。
图11示出根据本公开一实施例的消息分发装置的框图。如图11所示,该装置200可包括:
消息获取模块201,用于获取待分配队列的第一消息;
VNF确定模块202,用于在所述第一消息加入处于可用状态的第一队列后,若所述第一队列中消息的数量为指定数量,则确定所述第一队列中当前正在被处理的当前消息对应的当前虚拟化网络功能节点VNF,其中,在所述可用状态下,分配至所述第一队列的消息均能够加入所述第一队列;
消息分配模块203,用于将所述第一队列中所述当前VNF的消息保留在所述第一队列中进行处理,并为所述第一队列中除所述当前VNF以外的VNF的消息重新进行队列分配。
图12示出根据本公开一实施例的消息分发装置的框图。如图12所示,在一种可能的实现方式中,所述装置200还包括:
第一状态设置模块204,用于在确定所述第一队列中消息的数量为指定数量时,将所述第一队列的状态设置为异常状态,其中,在所述异常状态下,分配至所述第一队列的消息中所述当前VNF的消息能够加入所述第一队列,除所述当前VNF以外的VNF的消息不能加入所述第一队列。
在一种可能的实现方式中,所述装置200还包括:
第二状态设置模块205,用于在处于异常状态的第一队列中的消息处理完成后,将所述第一队列的状态设置为初始状态,其中,在所述初始状态下,分配至所述第一队列的消息均不能加入所述第一队列。
在一种可能的实现方式中,所述装置200还包括:
队列确定模块206,用于根据所述第一消息对应的VNF的IP地址和当前队列的数量,确定所述第一消息的第一队列;
第一消息加入模块207,用于在所述第一队列处于可用状态时,将所述第一消息加入所述第一队列中。
在一种可能的实现方式中,所述装置200还包括:
第二消息加入模块208,用于在所述第一队列处于异常状态且所述第一队列的当前消息与所述第一消息对应于相同的VNF时,将所述第一消息加入所述第一队列中。
在一种可能的实现方式中,所述装置200还包括:
队列查找模块209,用于在所述第一队列处于异常状态且所述第一队列的当前消息与所述第一消息对应于不同的VNF,或者,所述第一队列为处于初始状态时,在所述第一队列的循环子队列中查找所述第一消息的第二队列,其中,所述第一队列的序号与所述循环子队列的序号的差值为初始队列的数量;
第三消息加入模块210,用于将所述第一消息加入所述第二队列中。
在一种可能的实现方式中,所述装置200还包括:
触发***模块211,用于若所述第一队列的循环子队列中不存在所述第二队列,则触发队列***。
在一种可能的实现方式中,所述装置200还包括:
队列***模块212,用于在触发队列***时,对每个现有的队列***生成一个对应的子代队列,每个现有的队列和对应的子代队列互为循环子队列,其中,***生成的子代队列的默认状态被设置为初始状态。
在一种可能的实现方式中,所述队列查找模块2019还用于:
在所述第一队列的循环子队列中查找异常子队列,所述异常子队列为处于异常状态的循环子队列,且所述异常子队列的当前消息与所述第一消息对应于相同的VNF;
若在所述第一队列的循环子队列中查找到所述异常子队列,则将所述异常子队列确定为所述第二队列;
若在所述第一队列的循环子队列中未查找到所述异常子队列,则在所述第一队列的循环子队列中查找可用子队列,所述可用子队列为处于可用状态的循环子队列;
若在所述第一队列的循环子队列查找到所述可用子队列,则将首个找到的可用子队列确定为所述第二队列;
若在所述第一队列的循环子队列中未查找到所述可用子队列,则在所述第一队列的循环子队列中查找初始子队列,所述初始子队列为处于初始状态的循环子队列;
将首个找到的初始子队列的状态设置为可用状态、并确定为所述第二队列。
在一种可能的实现方式中,所述第一消息包括首次进行队列分配的消息和/或重新进行队列分配的消息。
在本公开实施例中,在第一消息加入处于可用状态的第一队列后,若所述第一队列中消息的数量为指定数量,则确定第一队列当中正在处理的当前消息对应的当前VNF,将所述第一队列中当前VNF的消息保留在所述第一队列中进行处理,并为第一队列中除当前VNF以外的VNF的消息重新进行队列分配,这样,导致第一队列阻塞的VNF的消息仍保留在第一队列中进行处理,其他VNF的消息重新分配至其他队列进行处理,可以减少出现异常的当前VNF对其他队列造成的影响,以及对同一队列中其他VNF的消息造成的影响,能够有效减少异常影响范围,提高消息队列的容错性。
图13是根据一示例性实施例示出的一种用于消息分发装置900的框图。参照图13,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由***总线903通信。并且,处理器901通过读取机器可读存储介质902中与消息分发逻辑对应的机器可执行指令以执行上文所述的消息分发方法。
本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种消息分发方法,其特征在于,所述方法包括:
获取待分配队列的第一消息;
在所述第一消息加入处于可用状态的第一队列后,若所述第一队列中消息的数量为指定数量,则确定所述第一队列中当前正在被处理的当前消息对应的当前虚拟化网络功能节点VNF,其中,在所述可用状态下,分配至所述第一队列的消息均能够加入所述第一队列;
将所述第一队列中所述当前VNF的消息保留在所述第一队列中进行处理,并为所述第一队列中除所述当前VNF以外的VNF的消息重新进行队列分配。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定所述第一队列中消息的数量为指定数量时,将所述第一队列的状态设置为异常状态,其中,在所述异常状态下,分配至所述第一队列的消息中所述当前VNF的消息能够加入所述第一队列,除所述当前VNF以外的VNF的消息不能加入所述第一队列。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在处于异常状态的第一队列中的消息处理完成后,将所述第一队列的状态设置为初始状态,其中,在所述初始状态下,分配至所述第一队列的消息均不能加入所述第一队列,在所述异常状态下,分配至所述第一队列的消息中所述当前VNF的消息能够加入所述第一队列,除所述当前VNF以外的VNF的消息不能加入所述第一队列。
4.根据权利要求1所述的方法,其特征在于,在获取待分配队列的第一消息之后,所述方法还包括:
根据所述第一消息对应的VNF的IP地址和当前队列的数量,确定所述第一消息的第一队列;
在所述第一队列处于可用状态时,将所述第一消息加入所述第一队列中。
5.根据权利要求4所述的方法,其特征在于,在确定所述第一消息的第一队列之后,所述方法还包括:
在所述第一队列处于异常状态且所述第一队列的当前消息与所述第一消息对应于相同的VNF时,将所述第一消息加入所述第一队列中,其中,在所述异常状态下,分配至所述第一队列的消息中所述当前VNF的消息能够加入所述第一队列,除所述当前VNF以外的VNF的消息不能加入所述第一队列。
6.根据权利要求5所述的方法,其特征在于,在确定所述第一消息的第一队列之后,所述方法还包括:
在所述第一队列处于异常状态且所述第一队列的当前消息与所述第一消息对应于不同的VNF,或者,所述第一队列为处于初始状态时,在所述第一队列的循环子队列中查找所述第一消息的第二队列,其中,所述第一队列的序号与所述循环子队列的序号的差值为初始队列的数量,在所述初始状态下,分配至所述第一队列的消息均不能加入所述第一队列;
将所述第一消息加入所述第二队列中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述第一队列的循环子队列中不存在所述第二队列,则触发队列***。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在触发队列***时,对每个现有的队列***生成一个对应的子代队列,每个现有的队列和对应的子代队列互为循环子队列,其中,***生成的子代队列的默认状态被设置为初始状态。
9.根据权利要求8所述的方法,其特征在于,所述在所述第一队列的循环子队列中查找所述第一消息的第二队列,包括:
在所述第一队列的循环子队列中查找异常子队列,所述异常子队列为处于异常状态的循环子队列,且所述异常子队列的当前消息与所述第一消息对应于相同的VNF;
若在所述第一队列的循环子队列中查找到所述异常子队列,则将所述异常子队列确定为所述第二队列;
若在所述第一队列的循环子队列中未查找到所述异常子队列,则在所述第一队列的循环子队列中查找可用子队列,所述可用子队列为处于可用状态的循环子队列;
若在所述第一队列的循环子队列查找到所述可用子队列,则将首个找到的可用子队列确定为所述第二队列;
若在所述第一队列的循环子队列中未查找到所述可用子队列,则在所述第一队列的循环子队列中查找初始子队列,所述初始子队列为处于初始状态的循环子队列;
将首个找到的初始子队列的状态设置为可用状态、并确定为所述第二队列。
10.根据权利要求1至9中任意一项所述的方法,其特征在于,所述第一消息包括首次进行队列分配的消息和/或重新进行队列分配的消息。
11.一种消息分发装置,其特征在于,包括:
处理器和机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至10中任意一项所述的方法。
12.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1至10中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810866203.7A CN109150753B (zh) | 2018-08-01 | 2018-08-01 | 消息分发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810866203.7A CN109150753B (zh) | 2018-08-01 | 2018-08-01 | 消息分发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109150753A CN109150753A (zh) | 2019-01-04 |
CN109150753B true CN109150753B (zh) | 2022-04-22 |
Family
ID=64799607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810866203.7A Active CN109150753B (zh) | 2018-08-01 | 2018-08-01 | 消息分发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109150753B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106851014A (zh) * | 2017-03-10 | 2017-06-13 | 广东欧珀移动通信有限公司 | 调整广播消息队列的方法、装置及终端 |
CN106878197A (zh) * | 2017-02-22 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种云平台消息传输的管理***及方法 |
CN108200134A (zh) * | 2017-12-25 | 2018-06-22 | 腾讯科技(深圳)有限公司 | 请求消息管理方法及装置、存储介质 |
US10027605B2 (en) * | 2013-08-26 | 2018-07-17 | Vmware, Inc. | Traffic and load aware dynamic queue management |
CN108337116A (zh) * | 2018-01-30 | 2018-07-27 | 新华三技术有限公司 | 消息保序方法及装置 |
-
2018
- 2018-08-01 CN CN201810866203.7A patent/CN109150753B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10027605B2 (en) * | 2013-08-26 | 2018-07-17 | Vmware, Inc. | Traffic and load aware dynamic queue management |
CN106878197A (zh) * | 2017-02-22 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种云平台消息传输的管理***及方法 |
CN106851014A (zh) * | 2017-03-10 | 2017-06-13 | 广东欧珀移动通信有限公司 | 调整广播消息队列的方法、装置及终端 |
CN108200134A (zh) * | 2017-12-25 | 2018-06-22 | 腾讯科技(深圳)有限公司 | 请求消息管理方法及装置、存储介质 |
CN108337116A (zh) * | 2018-01-30 | 2018-07-27 | 新华三技术有限公司 | 消息保序方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109150753A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10686756B2 (en) | Method and apparatus for managing MAC address generation for virtualized environments | |
US20210004258A1 (en) | Method and Apparatus for Creating Virtual Machine | |
CN108632074B (zh) | 一种业务配置文件下发方法和装置 | |
EP3800926B1 (en) | Alarm method and device | |
US11895577B2 (en) | Network slice selection method and apparatus | |
US9571374B2 (en) | Dynamically allocating compute nodes among cloud groups based on priority and policies | |
CN109684092B (zh) | 资源分配方法及装置 | |
US9866450B2 (en) | Methods and apparatus related to management of unit-based virtual resources within a data center environment | |
US20190188014A1 (en) | Virtual appliances | |
CN108737224B (zh) | 一种基于微服务架构的报文处理方法和装置 | |
US20150178117A1 (en) | Selecting cloud computing resource based on fault tolerance and network efficiency | |
EP3905588A1 (en) | Cloud platform deployment method and apparatus, server and storage medium | |
CN113037794B (zh) | 计算资源配置调度方法、装置及*** | |
EP3442201B1 (en) | Cloud platform construction method and cloud platform | |
CN109032533B (zh) | 一种数据存储方法、装置和设备 | |
US9792146B2 (en) | Iterative anti-collocation of network resources using prioritized graph coloring | |
US10560385B2 (en) | Method and system for controlling network data traffic in a hierarchical system | |
US20200293210A1 (en) | Allocating storage system ports to virtual machines | |
CN112424749A (zh) | 内存占用有限情况下的按需代码执行 | |
CN109150753B (zh) | 消息分发方法及装置 | |
CN107408058B (zh) | 一种虚拟资源的部署方法、装置及*** | |
CN109933959B (zh) | 一种许可证控制方法及相关设备 | |
US9417900B2 (en) | Method and system for automatic assignment and preservation of network configuration for a virtual machine | |
CN110300068B (zh) | Arp资源管理方法、装置、电子设备 | |
US7590738B2 (en) | Method and system for processing concurrent events in a provisional network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230616 Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: H3C INFORMATION TECHNOLOGY Co.,Ltd. Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466 Patentee before: NEW H3C TECHNOLOGIES Co.,Ltd. |