CN105765555A - 分布式系统中的严格排队 - Google Patents

分布式系统中的严格排队 Download PDF

Info

Publication number
CN105765555A
CN105765555A CN201480060776.0A CN201480060776A CN105765555A CN 105765555 A CN105765555 A CN 105765555A CN 201480060776 A CN201480060776 A CN 201480060776A CN 105765555 A CN105765555 A CN 105765555A
Authority
CN
China
Prior art keywords
message
queue
server
queue server
order parameter
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.)
Pending
Application number
CN201480060776.0A
Other languages
English (en)
Inventor
J·B·沃德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN105765555A publication Critical patent/CN105765555A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • H04L47/564Attaching a deadline to packets, e.g. earliest due date first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/621Individual queue per connection or flow, e.g. per VC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6255Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority

Abstract

公开了用于在分布式系统中实施严格排队的方法和系统。基于多个消息的严格次序参数,将所述消息分配给多个队列服务器。将共享严格次序参数的消息分配给所述队列服务器中的相应一个。将顺序识别符指派给所述队列服务器处的所述多个消息。每个顺序识别符指示在所述严格次序参数中的对应一个的消息顺序中的相应位置。所述相应位置基于所述队列服务器处的接收时间。基于所述顺序识别符,使所述多个消息入队。

Description

分布式系统中的严格排队
背景技术
许多公司和其它组织操作使众多计算系统和其它计算资源互连以支持其操作的分布式系统,诸如其中所述计算系统是同位的(例如,作为本地网络的部分)或代替地位于多个不同地理位置中(例如,经由一个或多个专用或公用中间网络连接)。例如,收容大量互连计算系统的数据中心已变得平凡,诸如由且代表单一组织操作的专用数据中心和由如企业的实体操作以将计算资源提供给使用者的公用数据中心。随着典型分布式系统的规模和范围增大,提供、支配和管理计算资源的任务已变得越来越复杂。
例如,可以使用分布式系统以按优先化高可用性和冗余的方式实施排队服务。然而,用于实施分布式排队服务的现有方法可以不按其预期次序呈现消息。此外,用于实施分布式排队服务的现有方法可以呈现消息超过预期次数(例如,一次)。不按其预期次序呈现消息和呈现消息超过一次可以给需要严格队列行为的应用带来问题。
附图说明
图1说明了根据一个实施方案的用于分布式系统中的严格排队的示例性系统环境。
图2A和2B说明了根据一个实施方案的用于在分布式系统中实施消息转发与严格排队的示例性系统环境。
图3A和3B说明了根据一个实施方案的用于分布式系统中的严格排队的示例性系统环境中的队列服务器功能的方面。
图4A和4B说明了根据一个实施方案的用于在分布式系统中实施冗余与严格排队的示例性系统环境。
图5说明了根据一个实施方案的用于在分布式系统中有效地采用队列使用者与严格排队的示例性系统环境。
图6是说明了根据一个实施方案的用于在分布式系统中实施严格排队的方法的流程图。
图7说明了根据一个实施方案的用于队列客户端的预处理和处理管道的示例性系统环境。
图8说明了根据一个实施方案的用于具有心跳功能的队列客户端的预处理和处理管道的示例性系统环境。
图9是说明了根据一个实施方案的用于实施队列客户端的预处理和处理管道的方法的流程图。
图10说明了可用于某些实施方案的计算装置的实例。
虽然本文中通过若干实施方案和说明性图式的实例描述实施方案,但所属领域熟练技术人员将意识到,实施方案不限于所述实施方案或图式。应了解,图式和其详细描述并非意在将实施方案限于所公开的特定形式,但相反,意图是涵盖落在如由所附权利要求书界定的精神和范围内的所有修改、等效物和替代物。本文中所使用的标题仅用于组织目的且并非意指用来限制具体实施方式或权利要求书的范围。如遍及本申请所使用,可以在容许性意义(即,意指“可能”)而非强制性意义(即,意指“必须”)上使用字词“可以”。相似地,字词“包括(include、including和includes)”意指“包括但不限于”。
具体实施方式
描述了用于在分布式系统中实施严格排队的方法和系统的各个实施方案。在具有多个队列服务器的分布式严格队列系统中,每个队列服务器可以被指派严格次序参数的值范围的部分。基于其严格次序参数的值,可以将传入消息转发到适于所述严格次序参数值的队列服务器,且所述队列服务器可以将顺序识别符指派给所述消息。然后可以相对于具有严格次序参数的相同值的其它消息按预期次序呈现所述消息。此外,可以在分布式严格队列系统中将每个消息传递到队列使用者一次且仅一次。
描述了用于实施队列客户端的预处理和处理管道的方法和系统的各个实施方案。对于队列中的任何给出消息,队列客户端可以获得用来预处理消息的估计时间和用来处理消息的估计时间。基于用于队列中的连续消息的这些估计时间,所述客户端可以对后来的消息执行预处理操作(例如,提取处理所需的数据)同时继续处理早前的消息。以这种方式,队列客户端可以在所述客户端准备处理消息时对特定消息执行预处理的全部或部分。在一个实施方案中,处理和预处理可以对具有不同严格次序参数的连续消息同时执行或在预处理阶段不具有严格保证时执行。
图1说明了根据一个实施方案的用于分布式系统中的严格排队的示例性系统环境。分布式严格队列系统100可以包括多个队列生产者(例如,队列生产者150A和150B到150N)、使用多个队列服务器(例如,队列服务器115A和115B到115N)实施的队列服务110和多个队列使用者(例如,队列使用者160A和160B到160N)。队列生产者150A-150N可以表示各个客户端、客户端帐户、计算实例、资源、进程或其任何合适组合。队列生产者150A-150N中的每个可以将一个或多个消息供应给要入队的队列服务110。所述消息可以表示要使用适当计算资源执行或以其它方式实施的任务或请求。例如,消息可以描述或引用要使用来自一个或多个指示的数据源的源数据和/或一个或多个指示的数据目的地中的存储结果执行或解译的一个或多个指令。如下文将更详细描述,队列服务110可以实施一个或多个严格队列120,其中具有严格次序参数的相同值的消息是按其预期次序呈现。队列使用者160A-160N可以从严格队列120拉取消息并执行或以其它方式实施消息。在一个实施方案中,队列服务110可以传递每个消息仅一次。
在一个实施方案中,严格队列120可以包括与严格次序识别符的不同值相关联的消息。具有严格次序参数的相同值的消息可以相对于彼此按正确次序入队。然而,对于具有严格次序参数的不同值的消息,队列服务110可以使用不保证按正确次序呈现具有严格次序参数的不同值的消息的“尽力”排序技术。尽力排序可以导致由队列客户端按不同于由队列服务110接收消息的次序处理具有严格次序识别符的不同值的一些消息。因此,严格队列120可以对具有严格次序识别符的相同值的消息严格且对具有严格次序识别符的不同值的消息不严格。
预计分布式严格队列系统100可以包括未示额外组件、少于所示的组件或不同组合、配置或量的所示组件。例如,尽管三个队列生产者150A、150B和150N出于实例和说明的目的而示出,但预计可以使用不同量和组合的队列生产者。此外,尽管三个队列服务器115A、115B和115N出于实例和说明的目的而示出,但预计可以使用不同量和组合的队列服务器。此外,尽管三个队列使用者160A、160B和160N出于实例和说明的目的而示出,但预计可以使用不同量和组合的队列使用者。
分布式严格队列系统100可以包括一个或多个计算装置,其中的任何一个可以由图10中所说明的示例性计算装置3000。在各个实施方案中,可以由相同计算装置或任何合适数量的不同计算装置提供分布式严格队列系统100的功能的部分,包括队列生产者150A-150N、队列服务器115A-115N和/或队列使用者160A-160N。如果使用不同计算装置实施分布式严格队列系统100的组件中的任何一个,那么组件和其相应计算装置可以例如经由网络通信地耦接。所说明组件中的每个可以表示可用来执行其相应功能的软件和硬件的任何组合。
在一些实施方案中,可以将队列服务器115A-115N和队列使用者160A-160N实施为虚拟计算实例或物理计算实例。虚拟计算实例和/或物理计算实例可以提供给客户端,由管理计算资源、存储器资源、存储资源和网络资源的提供者网络提供和维护。虚拟计算实例可以包括具有指定计算容量(其可以通过指示CPU类型和数量、主存储器大小等指定)和指定软件栈(例如,特定版本的操作系统,其可以转而在管理程序之上运行)的一个或多个服务器。可以由图10中所说明的示例性计算机装置3000实施一个或多个虚拟计算实例。
在一个实施方案中,分布式严格队列系统100的合适组件可以选择和/或提供队列服务器115A-115N和/或队列使用者160A-160N。例如,可以从可用计算实例的合适池提供队列服务器115A-115N和/或队列使用者160A-160N。在一个实施方案中,可以根据需要将额外计算实例添加到队列服务器115A-115N和/或队列使用者160A-160N。在一个实施方案中,如果在特定时间点无需计算实例,可以将所述计算实例从队列服务器115A-115N和/或队列使用者160A-160N返回到可用计算实例池。
在一个实施方案中,可以使用提供者网络将分布式严格队列系统100的功能提供给客户端。例如,分布式严格队列系统100的功能可以作为网页可访问服务呈现给客户端。由实体(诸如公司或公共组织)构建以将可经由互联网和/或其它网络访问的一个或多个服务(诸如各种类型的基于云的计算或存储)提供给分布式客户端组的网络可以称为提供者网络。提供者网络可以包括托管各个资源池的众多数据中心(诸如物理和/或虚拟化计算机服务器、存储装置、联网设备等的集合),其用来实施并分配由提供者提供的基础结构和服务。在一些实施方案中,可以按单位(称为“实例”)将资源提供给客户端,诸如虚拟或物理计算实例或存储实例。虚拟计算实例可以例如包括具有指定计算容量(其可以通过指示CPU类型和数量、主存储器大小等指定)和指定软件栈(例如,特定版本的操作系统,其可以转而在管理程序之上运行)的一个或多个服务器。多种不同类型的计算装置可以单独地或组合地用来在不同实施方案中实施提供者网络的资源,包括通用或专用计算机服务器、存储装置、网络装置等。
在一个实施方案中,提供者网络的操作者可以对其客户端实施一组灵活资源预留、控制和访问连接。例如,提供者网络可以实施允许客户端学习、选择、购买对访问的资源和/或预留资源的节目资源预留连接(例如,经由网站或一组网页)。在一个实施方案中,可以代表客户端使用实施分布式严格队列系统100的客户端可访问服务预留队列资源。根据这个实施方案,这个环境中的分布式严格队列系统100可以接收要入队的各个消息的规格,例如,一个或多个任务的描述和所述任务要使用的输入数据的源的指示。作为响应,分布式严格队列系统100可以使用提供者网络的选定资源池的一个或多个资源使所述任务入队并执行所述任务。在一个实施方案中,可以基于各个任务的预期计算需要自动选择资源池。在一个实施方案中,可以基于由客户端提交的特定资源请求或预留选择资源池。
在一个实施方案中,客户端可以使用一个或多个合适接口(诸如一个或多个网页、应用程序设计接口[API]或命令行接口[CLI])以提供要入队的各个消息且以其它方式配置分布式严格队列系统100。在一个实施方案中,客户端可能使用所述接口查看所述消息的当前状态。在一个实施方案中,关于分布式严格队列系统100中的消息的额外信息可以经由所述接口而可用,诸如程序输出、错误日志、异常日志等。
图2A和2B说明了根据一个实施方案的用于在分布式系统中实施消息转发与严格排队的示例性系统环境。每个队列生产者可以随时间推移将一组消息提供给队列服务110。例如,队列生产者150A可以提供消息151A,队列生产者150B可以提供消息151B,且队列生产者150N可以提供消息151N。每个消息可以包括严格次序参数。在一个实施方案中,可以由分布式严格队列系统100内的队列生产者指派严格次序参数。在一个实施方案中,不同队列生产者可以生产共享严格次序参数的相同值的消息。此外,单一队列生产者可以生产具有严格次序参数的不同值的消息。可以由队列服务110在各个时间点接收消息151A-151N。
在一个实施方案中,可以由队列服务器115A-115N的一个或多个指明实例接收消息151A-151N。如图2A中所示,例如,基本上可以由队列服务器中的任何一个接收消息151A-151N,举例来说,诸如队列服务器115A和队列服务器115B。基于与消息相关联的严格次序参数的值,最初从对应队列生产者接收消息的队列服务器可以将消息转发到与所述严格次序参数值相关联的特定队列服务器。
在一个实施方案中,可以在队列服务器115A-115N当中划分严格次序参数的值范围,使得所述队列服务器中的特定者可以负责处理通过严格次序参数的每个值识别的消息。所述值范围可以包括任何值集合,且所述值可以包括整数、字母数字值、二进制值等。在一个实施方案中,可以将严格次序参数的每个值指派给队列服务器115A-115N中的一个且仅一个。在一个实施方案中,队列服务器115A-115N中的任何一个可以负责严格次序参数的一个或多个值。
可以由对应队列生产者产生消息的严格次序参数的值。例如,严格次序参数的值可以是字符串、二进制值或整数。在一个实施方案中,可以由初始接收者队列服务器将稳定哈希函数应用于如在传入消息中表达的严格次序参数的值。以这种方式,可以将严格次序参数的各个初始值标准化到已知范围内的特定长度和/或数据类型以便由队列服务110进行更有效处理。如本文中所使用,术语“严格次序参数”可以指代与消息相关联的原始严格次序参数(或其值)或将原始严格次序参数用作输入的哈希函数的结果。在一个实施方案中,可以基于哈希值将消息转发到适当队列服务器(即,目的地服务器)。
在一个实施方案中,被配置来从队列生产者150A-150N接收传入消息的队列服务器115A-115N中的每个可以包括用于目的地服务器确定的功能。例如,队列服务器115A可以包括实施目的地服务器确定功能的模块130A,且队列服务器115B可以包括实施目的地服务器确定功能的模块130B。使用目的地服务器确定模块130A或130B,对应队列服务器可以比较传入消息的严格次序参数的值与指派给各个队列服务器的值范围。目的地服务器确定模块130A或130B可以使用任何合适技术实施目的地服务器确定功能,诸如使用将表示严格次序参数的输入值映射到表示队列服务器的输出值的查找函数。目的地服务器确定模块130A或130B可以确定队列服务器的身份,消息应基于消息的严格次序参数值转发到队列服务器,即,目的地队列服务器。队列服务器115A可以基于严格次序参数的一个或多个值将一个或多个消息152B转发到队列服务器115B,且队列服务器115B可以基于严格次序参数的一个或多个值将一个或多个消息152A转发到队列服务器115A。
消息的严格次序参数值可以在指派给目的地队列服务器的值的范围内。可以使用用于存储目的地服务器状态的模块存储目的地服务器确定功能的输出以供后来引用。例如,队列服务器115A可以包括实时目的地服务器状态功能的模块135A,且队列服务器115B可以包括实时目的地服务器状态功能的模块135B。在一个实施方案中,目的地服务器状态135A或135B可以表示队列服务110内的活动服务器的整个或部分清单。
在一个实施方案中,如果一个或多个新队列服务器在分布式严格队列系统100中变为活动,如果一个或多个队列服务器停止活动或从分布式严格队列系统100移除或者以其它方式将如果严格次序参数的值范围再指派给队列服务器,那么目的地服务器确定模块130A和130B和/或状态135A和135B可以变化。例如,如果具有严格次序参数的特定值的一组消息开始对指派给所述严格次序参数值的特定队列服务器的资源置于过多需求,那么严格次序参数的范围可以被再平衡。在这些情况下,对特定队列服务器的负载可以通过将严格次序参数的一个或多个值再指派给另一队列服务器而减小。作为另一实例,如果由具有严格次序参数的特定值的一组消息提供的负载充分减小,那么负责的队列服务器可以被指派严格次序参数的额外值使得其可以最优化其资源使用。在一个实施方案中,队列服务器110可以根据需要添加到分布式严格队列系统100或从分布式严格队列系统100移除以处理当前负载和/或预期负载。
如图2B中所示,一个或多个组件116可以被配置来用作队列生产者150A-150N与队列服务器115A-115N之间的接口。组件116中的每个可以指代转发服务器。尽管一个转发服务器116出于实例和说明的目的而示出,但预计可以使用不同量和组合的转发服务器。可以由图10中所说明的示例性计算装置3000实施转发服务器116。在一个实施方案中,可以从队列服务器115A-115N当中提供每个转发服务器116。一个或多个转发服务器116可以用来从队列生产者150A-150N接收消息并基于消息的严格次序参数值将每个消息转发到适当队列服务器。例如,一个或多个转发服务器116可以基于严格次序参数的一个或多个值将一个或多个消息152A转发到队列服务器115A,基于严格次序参数的一个或多个值将一个或多个消息152B转发到队列服务器115B,且基于严格次序参数的一个或多个值将一个或多个消息152N转发到队列服务器115N。如上文参考图2A所论述,每个转发服务器116可以包括用于目的地服务器确定的模块130C和用于目的地服务器状态存储的模块135C。可以在任何合适基础上(例如,在逐个队列或逐个帐户基础上)使用转发服务器116与分布式严格队列系统100。
如果消息的队列生产者不供应严格次序参数值,那么可以由分布式严格队列系统100内的另一实体产生值,诸如最初从队列生产者接收消息的队列服务器或转发服务器。可以使用任何合适技术产生严格次序参数值,包括从可能值范围(例如,在指派给各个队列服务器115A-115N的值的相同范围内)进行统一随机选择或从可能值范围进行循环选择。值范围可以是分布式严格队列系统100的参数或可根据严格队列配置。
图3A和3B说明了根据一个实施方案的用于分布式系统中的严格排队的示例性系统环境中的队列服务器功能的方面。尽管参考队列服务器115A说明队列服务器功能,但预计可由分布式严格队列系统100中的队列服务器115A-115N中的任何一个实施相同或相似功能。可以将严格次序参数值中的至少一个指派给队列服务器115A。因此,队列服务器115A可以从队列生产者150A-150N中的一个或多个接收具有严格次序参数的第一值的消息153。可以在不同时间点接收消息。例如,消息153可以包括早前的消息153A和后来的消息153N。可以由队列服务器115A接收任何合适数量消息。如上文所论述,可以基于消息内的严格次序参数将消息153从队列服务器中的另一个或从转发服务器转发到队列服务器115A。
队列服务器115A可以包括顺序识别功能140A。在一个实施方案中,指派给队列服务器115A的严格次序参数的范围内的每个传入消息可以经历使用顺序识别功能140A进行的顺序识别。顺序识别功能140A可以采用任何合适技术以在严格次序参数的对应值的消息顺序中对每个传入消息指派位置。例如,顺序识别功能140A可以基于随时间推移接收的消息153产生第一值的消息顺序141。消息顺序141可以基于队列服务器115A处的接收时间指示消息的排序。接收时间可以基于接收的第一字节的接收时间、接收的最后一个字节的接收时间或两者之间的任何时间。因此,第一值的消息顺序141可以将早前的消息153A放置在后来的消息153N之前。
顺序识别功能140A可以将顺序识别符指派给每个消息。每个顺序识别符可以指示在消息的消息顺序中的相应位置,其中相应位置基于接收时间(例如,接收的第一字节的接收时间、接收的最后一个字节的接收时间或两者之间的任何时间)。在一个实施方案中,顺序识别符可以包括时间戳记(例如,指示接收时间)和/或序数(指示在与严格次序参数的特定值相关联的顺序中消息的相对位置)。在一个实施方案中,顺序识别功能140A可以记住严格次序参数的特定值的最后一个顺序识别符,只要所述特定值是在分布式严格队列系统100中活动且与提供给队列服务器115A的新消息相关联。如果严格次序参数的特定值在最后一个消息传递到队列使用者时与新消息不相关,那么所述特定值的消息顺序可以被丢弃。如果一个或多个队列提供者恢复将具有严格次序参数的特定值的消息发送到队列服务器115A,那么可以(例如,从一开始)重启消息顺序。
在已将顺序识别符添加到传入消息之后,队列服务器115A可以使消息入队在逻辑队列121A中。在一个实施方案中,逻辑队列可以由单一队列服务器(例如,服务器115A)管理且仅可以包括与严格次序参数的特定值相关联的所述消息。逻辑队列121A可以使具有严格次序参数的特定值的消息严格排序。通过引用具有严格次序参数的特定值的消息153的顺序识别符,消息153可以按其中由被指明处理特定值的队列服务器115A接收所述消息的次序添加到逻辑队列121A。因此,逻辑队列121A可以包括相对于彼此按严格次序的严格次序参数的特定值的消息。例如,具有第一值的早前的消息(具有顺序识别符)154A和具有第一值的后来的消息(具有顺序识别符)154N可以相对于彼此按正确次序入队。
如图3B中所示,队列服务器115A可以接收具有严格次序参数的不同值的消息157。尽管参考队列服务器115A说明队列服务器功能,但预计可由分布式严格队列系统100中的队列服务器115A-115N中的任何一个实施相同或相似功能。可以将严格次序参数值中的至少两个指派给队列服务器115A,例如在指派给队列服务器115A的值的范围内。因此,队列服务器115A可以从队列生产者150A-150N中的一个或多个接收一组消息157,其中所述组消息157包括具有严格次序参数的第一值的消息和具有严格次序参数的第二值的消息。可以在不同时间点接收消息157。例如,消息157可以包括具有第一值的早前的消息153A和后来的消息153N,且消息157还可以包括具有第二值的早前的消息155A和后来的消息155N。可以由队列服务器115A接收任何合适数量消息。如上文所论述,可以基于消息内的严格次序参数将消息157从队列服务器中的另一个或从转发服务器转发到队列服务器115A。
队列服务器115A可以包括顺序识别功能140A。在一个实施方案中,指派给队列服务器115A的严格次序参数的范围内的每个传入消息可以经历使用顺序识别功能140A进行的顺序识别。顺序识别功能140A可以采用任何合适技术以在严格次序参数的对应值的消息顺序中对每个传入消息指派位置。例如,顺序识别功能140A可以基于具有随时间推移接收的第一值的消息153A-153N产生第一值的消息顺序141,且顺序识别功能140A可以基于具有随时间推移接收的第二值的消息155A-155N产生第二值的消息顺序142。每个消息顺序141和142可以基于队列服务器115A处的接收时间指示消息的排序。接收时间可以基于消息的第一字节的接收或消息的最后一个字节的接收。因此,第一值的消息顺序141可以将早前的消息153A放置在后来的消息153N之前,且第二值的消息顺序142可以将早前的消息155A放置在后来的消息155N之前。
如上文所论述,顺序识别功能140A可以将顺序识别符指派给每个消息。每个顺序识别符可以指示在消息的消息顺序中的相应位置,其中相应位置基于(例如,第一字节或最后一个字节的)接收时间。在一个实施方案中,顺序识别符可以包括时间戳记(例如,指示接收时间)和/或序数(指示在与严格次序参数的特定值相关联的顺序中消息的相对位置)。
在已将顺序识别符添加到传入消息之后,队列服务器115A可以针对严格次序参数的第一值使消息入队在逻辑队列121A中或针对严格次序参数的第二值使消息入队在逻辑队列122A中。在一个实施方案中,每个逻辑队列121A和122A可以由单一队列服务器(例如,服务器115A)管理且仅可以包括与严格次序参数的特定值相关联的所述消息。逻辑队列121A可以使具有严格次序参数的第一值的消息严格排序,且逻辑队列122A可以使具有严格次序参数的第二值的消息严格排序。通过引用具有严格次序参数的特定值的消息的顺序识别符,消息可以按其中由被指明处理特定值的队列服务器115A接收所述消息的次序添加到逻辑队列121A或122A。因此,逻辑队列121A可以包括相对于彼此按严格次序的严格次序参数的第一值的消息,且逻辑队列122A可以包括相对于彼此按严格次序的严格次序参数的第二值的消息。例如,具有第一值的早前的消息(具有顺序识别符)154A和具有第一值的后来的消息(具有顺序识别符)154N可以相对于彼此按正确次序入队。此外,具有第一值的早前的消息(具有顺序识别符)156A和具有第二值的后来的消息(具有顺序识别符)156N可以相对于彼此按正确次序入队
在一个实施方案中,严格队列120可以包括多个逻辑队列,诸如逻辑队列121A和122A。逻辑队列中的每个可以由单一队列服务器管理且对应于严格次序参数的特定值。具有严格次序参数的相同值的消息可以相对于彼此按正确次序入队。然而,对于具有严格次序参数的不同值的消息,队列服务110可以使用不保证按正确次序呈现具有严格次序参数的不同值的消息的“尽力”排序技术。尽力排序可以导致具有严格次序识别符的不同值的一些消息按不同于由队列服务110接收消息的次序放置在队列120中。因此,严格队列120可以对具有严格次序识别符的相同值的消息严格且对具有严格次序识别符的不同值的消息不严格。
图4A和4B说明了根据一个实施方案的用于在分布式系统中实施冗余与严格排队的示例性系统环境。在一个实施方案中,分布式严格队列系统100可以使用每个队列服务器的一个或多个备份服务器。一个或多个备份服务器可以被配置来如果主要服务器应经历故障那么恢复主要服务器的职责。如图4A的实例中所示,队列服务器115A是一个或多个严格次序参数的主要服务器。如实例中进一步所示,队列服务器115B是主要服务器115A的次要备份服务器,且队列服务器115N是主要服务器115A和次要服务器115B的第三备份服务器。服务器中的每个可以包括严格次序识别符的特定值的对应逻辑队列121A、121B或121N。预计可以在分布式严格队列系统100中使用不同数量和配置的备份服务器。
在消息是由主要服务器115A接收且用顺序识别符戳记时,可以将戳记的消息转发到一个或多个备份服务器(例如,次要服务器115B和第三服务器115N)。可以将复制的消息158A从主要服务器115A发送到次要服务器115B,且可以将复制的消息158B从次要服务器115B发送到第三服务器115N。第三服务器115N然后可以将接收确认159N发送到次要服务器115B,且次要服务器115B然后可以将接收确认159B发送到主要服务器115A。在一个实施方案中,主要服务器115A可以将消息放置在逻辑队列121A中和/或确认仅在从次要服务器115B接收接收确认159B之后使消息入队到消息源。
相似地,如图4B的实例中所示,在准备将消息传递到使用者时,主要服务器115A可以在传递消息之前将更新458A和458B发送到次要服务器115B和第三服务器115N。更新458A和458B可以指示主要服务器115A准备传递消息。在一个实施方案中,可以仅在一个或多个备份服务器已确认接收由主要服务器发送的更新(例如与接收确认459B和459N)之后传递到使用者。在一个实施方案中,将消息传递到使用者可以包括其中向一个或多个备份服务器通知传递迫近的准备步骤、用来将队列中的消息标记为在已传递消息之后“锁定”的锁定步骤和用来在使用者已确认消息成功处理之后从队列删除消息的删除步骤。更新458A和458B可以在每个步骤之前从主要服务器发送到一个或多个备份服务器,且步骤可以仅在一个或多个备份服务器已确认接收更新与接收确认459B和459N之后完成。例如,主要服务器115A可以仅在从使用者接收处理确认、将更新458A和458B发送到次要服务器115B和第三服务器115N以及接收更新接收确认459B和459N之后从队列121A删除消息。以这种方式,在主要服务器115A在传递进程期间的某个点出故障的情况下,分布式严格队列系统100可以使用一个或多个备份服务器提供“保证一次”消息传递(即,保证传递每个消息一次且仅一次)。
图5说明了根据一个实施方案的用于在分布式系统中有效地采用队列使用者与严格排队的示例性系统环境。在一个实施方案中,分布式严格队列系统100可以优先处理特定使用者160A-160N以增加消息执行的效率。每个队列使用者(例如,队列使用者160A)可以被指派严格次序参数的值范围的部分。分布式严格队列系统100可以尝试允许与严格次序参数的特定值相关联的使用者继续使用与严格次序参数的所述特定值相关联的消息。在一个实施方案中,每个队列使用者可以与提供具有严格次序参数的一个或多个特定值的消息的一个或多个特定队列服务器相关联。如图5的实例中所示,每个逻辑队列121A-121N可以表示严格次序参数的特定值。在各个实施方案中,每个队列使用者可以与严格次序参数的一个或多个特定值(和对应逻辑队列)一对一或一对多对应。
在一个实施方案中,可以基于指派给队列使用者的严格次序参数的一个或多个值以如上文参考图2A和2B所论述的相似方式将所述队列使用者引导到适当队列服务器。如图5中所示,一个或多个组件516可以被配置来用作队列使用者160A-160N与队列服务器115A-115N之间的接口。组件516中的每个可以指代转发服务器。尽管一个转发服务器516出于实例和说明的目的而示出,但预计可以使用不同量和组合的转发服务器。可以由图10中所说明的示例性计算装置3000实施转发服务器516。一个或多个转发服务器516可以用来从队列使用者160A-160N接收请求并基于与请求队列使用者相关联的严格次序参数的一个或多个值将每个请求传递到适当队列服务器。在转发服务器516确定用于特定队列使用者的对应队列服务器之后,所述队列服务器可以将消息推送到所述队列使用者,或所述队列使用者可以从所述队列服务器拉取消息。
每个转发服务器516可以包括用于执行服务器确定的模块530、用于存储队列服务器状态信息的模块535和用于存储队列使用者状态信息的模块540。在一个实施方案中,可以使用任何合适技术将严格次序参数的一个或多个值指派给队列使用者中的每个,包括从可能值范围(例如,在指派给各个队列服务器115A-115N的值的相同范围内)进行统一随机选择或从可能值范围进行循环选择。与特定队列使用者相关联的严格次序参数值可以存储在队列使用者状态信息540中。使用服务器确定模块530,转发服务器516可以比较与队列使用者相关联的严格次序参数值与指派给各个队列服务器的值的范围。服务器确定模块530可以使用任何合适技术实施服务器确定功能530,诸如使用将严格次序参数的值或值范围映射到队列服务器的查找函数。服务器确定模块530可以确定队列服务器的身份,所述队列服务器应基于与队列使用者相关联的严格次序参数的一个或多个值或值范围将消息提供给所述队列使用者。可以使用用于存储队列服务器状态信息的模块535存储服务器确定功能530的输出以供后来引用。
在执行服务器查找进程以确定负责严格次序参数的特定值或值范围的队列服务器之后,服务器确定模块530(或转发服务器516的任何其它合适组件)可以将请求(例如,队列使用者对消息的请求)转发到所述队列服务器。如果对应于严格次序参数值的逻辑队列包括可用于队列使用者的任何消息,那么队列服务器可以按逻辑顺序将下一个消息返回到队列使用者。如果对应于严格次序参数值的逻辑队列是空的,那么可以移除队列使用者与严格次序参数值之间的关联,且服务器确定模块530(或转发服务器516的任何其它合适组件)可以重启服务器查找进程。
如果队列服务器不具有负责指派给队列使用者的严格次序参数的值的队列服务器当中的消息,那么转发服务器516可以将严格次序参数的一个或多个新值或值范围指派给队列使用者并重启查找进程。或者,转发服务器516可以将指示队列使用者当前不负责处理任何消息的消息发送到队列使用者。响应于来自转发服务器516的这个消息,队列使用者可以进入睡眠状态,其中其与分布式严格队列系统100的交互减少。
通过允许队列服务器基于严格次序参数优先处理特定队列使用者,故障切换操作的效率和可靠度可以增强。此外,使用者的性能特性可以通过允许使用者处理严格次序参数的特定值的消息而增强,尤其是如果消息趋向于需要相同输入数据或其它资源。指派给各个使用者的严格次序参数的值范围可以被再平衡来例如使用负载平衡技术最优化资源使用。
图6是说明了根据一个实施方案的用于在分布式系统中实施严格排队的方法的流程图。如605中所示,可以在分布式严格队列系统处接收消息。消息可以从队列使用者(例如,客户端、客户端帐户、进程、实例、资源等)接收且可以具有由队列使用者指派的严格次序参数。分布式严格队列系统可以使用一个或多个接口和/或队列服务器接收消息。在一个实施方案中,分布式严格队列系统可以在接收消息之后计算严格次序参数的稳定哈希码。
可以在多个队列服务器当中划分严格次序参数的范围。可以将每个严格次序参数指派给队列服务器中的一个且仅一个。如610中所示,可以基于严格次序参数的值(或其哈希码)将消息传递到指派的队列服务器。可以使用用来基于消息的严格次序参数的值确定目的地队列服务器的功能确定目的地队列服务器。目的地队列服务器可以是包括当前消息中的值的严格次序参数的值范围的主要服务器。在一个实施方案中,主要服务器可以用接收的消息更新一个或多个备份服务器(例如,次要服务器和第三服务器)。
如615中所示,可以将顺序识别符指派给负责具有严格次序参数的消息的所有者的消息的队列服务器处的消息。顺序识别符可以指示在严格次序参数的消息顺序中的相应位置。相应位置可以基于接收时间。接收时间可以基于目的地队列服务器处的消息的第一或最后一个字节的接收。
如620中所示,可以基于顺序识别符使消息入队。可以相对于具有严格次序参数的相同值的其它消息按严格次序将消息放置在队列中。然而,在一些情况下,相对于具有严格次序参数的其它值的消息,消息可以不按次序。以这种方式,分布式严格队列系统可以确保具有相同严格次序参数的消息(即,具有其相同值)在队列中严格排序,而具有不同严格次序参数的消息(即,具有其不同值)未必按正确次序(即,弱序或不严格排序)。在一个实施方案中,主要服务器可以用关于消息入队的更新来更新一个或多个备份服务器(例如,次要服务器和第三服务器)。
图7说明了根据一个实施方案的用于队列客户端的预处理和处理管道的示例性系统环境。队列客户端750可以从队列服务710接收消息且执行各种操作以执行或以其它方式实施消息。在一个实施方案中,队列客户端750可以结合分布式严格队列系统100使用。队列客户端750可以对应于上文所论述的队列使用者160A-160N中的任何一个。队列服务710可以对应于上文所论述的队列服务110。
队列客户端750可以包括一个或多个计算装置,其中的任何一个可以由图10中所说明的示例性计算装置3000实施。在各个实施方案中,可以由相同计算装置或任何合适数量的不同计算装置提供队列客户端750的功能的部分。如果使用不同计算装置实施队列客户端750的组件中的任何一个,那么组件和其相应计算装置可以例如经由网络通信地耦接。所说明组件中的每个可以表示可用来执行其相应功能的软件和硬件的任何组合。在一些实施方案中,可以将队列客户端750实施为一个或多个虚拟计算实例和/或物理计算实例。预计队列客户端750可以包括未示额外组件、少于所示的组件或不同组合、配置或量的所示组件。
队列服务710可以维护一个或多个逻辑队列,诸如逻辑队列721A和逻辑队列721B。每个逻辑队列可以使用先进先出(FIFO)数据结构来存储与严格次序参数的特定值相关联的一个或多个消息。例如,逻辑队列721A可以存储具有严格次序参数的一个值的消息722A和消息722B到消息722N,且逻辑队列721B可以存储具有严格次序参数的另一值的消息723A和消息723B到消息723N。所述消息可以表示要使用适当计算资源执行或以其它方式实施的任务或请求。例如,消息可以描述或引用要使用来自一个或多个指示的数据源的源数据和/或一个或多个指示的数据目的地中的存储结果执行或解译的一个或多个指令。
在一个实施方案中,队列服务710可以包括用来估计用于处理消息中的一个的时间(即,持续时间)的功能。处理消息可以包括执行或实施消息中所述的一个或多个任务。对于具有严格次序参数的相同值的消息,处理阶段可以具有严格保证使得预期队列服务710按特定预定次序执行消息处理。队列服务710还可以包括用来用于预处理消息中的一个的时间(即,持续时间)的功能。预处理消息可以包括不同消息之间的严格排序所需的消息计算的任何部分。例如,预处理消息有时可以包括执行一个或多个任务以准备处理消息,诸如将消息中所述的数据提取或以其它方式加载为用于处理阶段的输入。在预处理消息包括提取消息时,可以从任何适当源捕获输入数据的元件,诸如本地存储位置、远程存储位置和/或分布式系统中的其它服务器。
在一个实施方案中,预处理和处理时间估计可以被配置成队列级,使得相同估计通常可以默认地应用于队列中的所有消息,但队列级估计可以被覆写用于队列中的特定消息。在一个实施方案中,每个消息可以具有其自身相应时间估计。因此,队列服务可以存储每个队列730A和/或每个消息730B的预处理和处理时间估计。任何合适技术可以用来确定估计。在一个实施方案中,可以基于每个消息和/或每个队列的用户指定配置确定时间估计。在一个实施方案中,可以由队列生产者使用由队列服务710呈现的任何合适接口供应可用来确定估计的信息。例如,可以由队列生产者在逐个消息基础上供应消息大小参数。消息大小参数可以是整数,其中较小值趋向于指示较短处理时间且较大值趋向于指示较长处理时间。在一个实施方案中,队列服务710可以被配置来基于队列客户端750随时间推移的性能分析可编程地估计预处理和/或处理时间。例如,队列服务710可以可编程地确定消息大小参数与各个处理的消息的处理时间之间的关系,且队列服务710可以可编程地确定消息大小参数与各个处理的消息的预处理时间之间的关系。以这种方式,队列服务710可以基于消息大小参数与现有消息的预处理和/或处理时间之间的关系产生对后续消息的预处理和/或处理时间的较佳估计。
队列客户端750可以从队列服务接收一系列消息并处理所述消息。在一个实施方案中,队列客户端750可以从队列服务710拉取消息725。客户端750可以通过将对一个或多个额外消息的一个或多个请求724发送到队列服务710或通过以其它方式指示从所述队列服务拉取消息,从逻辑队列721A和721B中的一个或多个拉取消息725。在一个实施方案中,队列服务710可以将消息726推送到队列客户端750。可以周期性地基于由队列服务710对队列客户端健康的分析将消息726推送到队列客户端750。队列客户端750可以在适当时间点将客户端健康的指示发送到队列服务710。例如,队列客户端750可以在从队列服务710接收消息之后发送健康指示。大体来说,队列客户端750的健康指示可以包括可由队列服务710用来确定以下动作的任何数据:是否将额外消息726发送到所述队列客户端;多少消息726发送到所述队列客户端;和/或多少逻辑队列指派给所述队列客户端。例如,健康指示可以趋向于指示客户端处的负载。基于随时间推移接收的健康指示中的一个或多个,队列服务710可以执行将逻辑队列指派给队列客户端750和一个或多个额外队列客户端的再平衡。队列服务710还可以确定如果其它队列客户端能够处理严格队列负载,那么特定队列客户端不是必需的;因此,队列服务可以将任何逻辑队列再指派给其它客户端且可以指示被视为非必需的队列客户端进入睡眠状态,从而减少队列客户端与队列服务的流量
队列客户端750还可以接收对预处理和处理每个消息的时间估计730。对每个消息的时间估计730可以在逐个消息基础上连同消息一起接收,即,与消息体成一捆。在一个实施方案中,可由队列服务710针对每个单独消息发送相关每个队列时间估计730A或相关每个消息时间估计730B。
基于预处理和处理时间估计730,队列客户端750可以实施用于预处理和处理消息721的管道。使用管道,队列客户端750可以开始预处理一个消息同时继续处理早前的消息。换句话来说,所述队列客户端可以同时处理一个消息和预处理另一消息。在一个实施方案中,队列客户端750可以包括用于消息预处理的功能770和用于消息处理的功能780。消息处理器780可以被配置来例如通过执行或解译消息体中包括的指令和/或调用函数或服务来执行消息中所述的任务。在一个实施方案中,消息预处理器770可以被配置来执行可以用来准备处理消息的任何任务,诸如将消息中所述的数据提取或以其它方式加载为用于处理阶段的输入。然而,大体来说,预处理阶段可以包括严格次序保证无需的任何计算。对于具有严格次序识别符的不同值的连续消息,可以同时执行预处理和处理两者。对于具有严格次序识别符的相同值的连续消息,有时可以同时执行第二消息预处理与第一消息处理。
队列客户端750可以包括调度器组件760。在一个实施方案中,调度器760可以基于用来处理当前消息的估计时间和用来预处理下一个消息的估计时间调度下一个消息的接收和/或预处理。例如,如果用来处理当前消息的估计时间是2.0秒且用来预处理下一个消息的估计时间是0.3秒,那么所述调度器可以造成队列客户端750在已处理当前消息达1.7秒之后开始预处理下一个消息。因此,下一个消息可以经完全预处理且准备好在接近当前消息处理完成时处理。以这种方式使用管道,队列客户端750可以在所述客户端准备好开始消息处理时对特定消息执行预处理的全部或部分。然而,在一个实施方案中,基本上可以在当前消息处理期间的任何时间点开始下一个消息的预处理,即使预处理可能在当前消息处理之前或在当前消息处理之后完成。
在首先由队列客户端750从队列服务710接收消息时,调度器760可以接收并分析消息。在消息预处理和处理的不同阶段,队列服务710可以使用不同标记来指示消息状态。例如,消息可以在发送到队列客户端750时标记为“已准备”且在处理开始时标记为“已锁定”。消息可以在由队列客户端750向队列服务710通知处理完成时从队列删除(或标记为删除)。
图8说明了根据一个实施方案的用于具有心跳功能的队列客户端的预处理和处理管道的示例性系统环境。在一个实施方案中,队列服务710可以包括逾时确定功能740。逾时确定功能740可以使用对处理时间的估计来确定消息的逾时持续时间。可以按任何合适方式将逾时持续时间计算为例如估计处理时间加额外时间或估计处理时间的倍数(例如,1.5倍)。如果队列客户端750在逾时持续时间内无法确认处理完成,那么队列服务710可以认为传递到所述客户端的消息已出故障。在一个实施方案中,队列客户端750可以请求用来完成消息处理的额外时间。逾时确定功能740可以被配置来基于这个请求的接收延长逾时持续时间。以这种方式,可以防止或延迟逾时。
在一个实施方案中,队列客户端750可以包括心跳指示器功能790。使用心跳指示器功能790,队列客户端750可以按适当间隔发送一个或多个心跳指示791。在一个实施方案中,可以使用相同或相似模块传达上文所论述的健康指示。在一个实施方案中,心跳指示791可以包括可由队列服务710用来确定队列客户端750处的负载的数据。将心跳指示791用于多个队列客户端,队列服务可以决定如果心跳指示太多活动客户端用于由队列表示的当前负载那么使客户端中的一个或多个入睡。
图9是说明了根据一个实施方案的用于实施队列客户端的预处理和处理管道的方法的流程图。如905中所示,队列客户端可以例如从队列服务接收指示用来预处理第一消息的估计时间的数据和指示用来处理第一消息的估计时间的数据。如910中所示,队列客户端可以开始第一消息处理。如915中所示,队列客户端还可以例如从队列服务接收指示用来预处理第二消息的估计时间的数据和指示用来处理第二消息的估计时间的数据。
如920中所示,队列客户端可以在第一消息处理期间开始第二消息预处理。预处理可以包括提取第二消息中所述的数据或与第二消息相关联且无需相对于第一消息处理按严格次序执行的任何其它计算。第二消息预处理可以被调度来基于用来处理第一消息的估计时间和用来预处理第二消息的估计时间开始。在一个实施方案中,第二消息预处理可以被调度来在第一消息处理结束时基于用来处理第一消息的估计时间和用来预处理第二消息的估计时间完成。在一个实施方案中,可以在第一消息处理期间对第一和第二消息的严格次序参数的分析执行920中所示的操作。
如925中所示,队列客户端可以开始第二消息处理。在一个实施方案中,第二消息处理可以使用从第二消息预处理产生的结果中的任何一个。第二消息处理可以在第一消息处理完成之后开始。以这种方式,队列客户端可以实施用于预处理和处理队列中的连续消息的管道。队列客户端还可以例如在消息处理完成之后将消息中的任何一个的处理状态发送到队列服务。
说明性计算机系统
在至少一些实施方案中,实施本文中所述的技术中的一种或多种的部分或全部的计算机系统可以包括通用计算机系统,其包括或被配置来访问一个或多个计算机可读介质。图10说明了这个通用计算装置3000。在所说明实施方案中,计算装置3000包括经由输入/输出(I/O)接口3030耦接到系统存储器3020的一个或多个处理器3010。计算装置3000还包括耦接到I/O接口3030的网络接口3040。
在各个实施方案中,计算装置3000可以是包括一个处理器3010的单处理器系统或包括若干处理器3010的多处理器系统(例如,两个、四个、八个或另一合适数量)。处理器3010可以包括能够执行指令的任何合适处理器。例如,在各个实施方案中,处理器3010可以是实施各种指令集结构(ISA)中的任何一种的通用或嵌入式处理器,诸如x86、PowerPC、SPARC、或MIPSISA、或任何其它合适ISA。在多处理器系统中,处理器3010中的每个可以(通常但未必)实施相同ISA。
系统存储器3020可以被配置来存储可由处理器3010访问的程序指令和数据。在各个实施方案中,可以使用任何合适存储器技术实施系统存储器3020,诸如静态随机访问存储器(SRAM)、同步动态RAM(SDRAM)、易失性/闪速类型存储器或任何其它类型的存储器。在所说明实施方案中,实施一个或多个所要功能(诸如上文描述的所述方法、技术和数据)的程序指令和数据被示出为作为代码(即,程序指令)3025和数据3026存储在系统存储器3020内。
在一个实施方案中,I/O接口3030可以被配置来协作处理器3010、系统存储器3020与装置中的任何外围装置之间的I/O流量,包括网络接口3040或其它外围接口。在一些实施方案中,I/O接口3030执行任何必需协议、计时或其它数据变换以将来自一个组件(例如,系统存储器3020)的数据信号转换成适于由另一组件(例如,处理器3010)使用的格式。在一些实施方案中,I/O接口3030可以包括对通过各种类型的外围总线附接的装置的支持,举例来说,诸如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变体。在一些实施方案中,I/O接口3030的功能可以分成两个或两个以上单独组件,举例来说,诸如北桥和南桥。再者,在一些实施方案中,I/O接口3030的功能的一些或全部(诸如到系统存储器3020的接口)可以直接并入到处理器3010中。
网络接口3040可以被配置来允许在计算装置3000与附接到网络3050的其它装置3060之间交换数据,举例来说,诸如如图1中所说明的其它计算机系统或装置。在各个实施方案中,网络接口3040可以支持经由任何合适的有线或无线通用数据网络进行的通信,举例来说,诸如以太网类型。此外,网络接口3040可以支持经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)或经由存储区域网络(诸如光纤通道SAN)或经由任何其它合适类型的网络和/或协议进行的通信。
在一些实施方案中,系统存储器3020可以是被配置来存储如上文所述的用于实施对应方法和设备的实施方案的程序指令和数据的计算机可读(即,计算机可访问)介质的一个实施方案。然而,在其它实施方案中,程序指令和/或数据可以被接收、发送或存储在不同类型的计算机可读介质上。大体来说,计算机可读介质可以包括非暂时性存储介质或存储器介质,诸如磁性或光学介质,例如,经由I/O接口3030耦接到计算装置3000的磁盘或DVD/CD。非暂时性计算机可读存储介质还可以包括可以在计算装置3000的一些实施方案中包括为系统存储器3020或另一类型的存储器的任何易失性或非易失性介质,诸如RAM(例如SDRAM、DDRSDRAM、RDRAM、SRAM等)、ROM等。此外,计算机可读介质可以包括经由诸如可以经由网络接口3040实施的通信介质(诸如网络和/或无线链路)递送的传输介质或信号,诸如电信号、电磁信号或数字信号。多个计算装置的部分或全部(诸如图10中所述)可以用来实施各个实施方案中的所述功能;例如,在各种不同装置和服务器上运行的软件组件可以合作以提供功能。在一些实施方案中,除使用通用计算机系统实施以外或代替使用通用计算机系统实施的是,可以使用存储装置、网络装置或专用计算机系统实施所述功能的部分。如本文中所使用,术语“计算装置”指代至少所有这些类型的装置且不限于这些类型的装置。
各个实施方案还可以包括接收、发送或存储根据前文描述在计算机可读介质上实施的指令和/或数据。大体来说,计算机可读介质可以包括存储介质或存储器介质,诸如磁性或光学介质,例如,磁盘或DVD/CD-ROM、易失性或非易失性介质,诸如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等。在一些实施方案中,计算机可读介质还可以包括经由通信介质(诸如网络和/或无线链路)递送的传输介质或信号,诸如电信号、电磁信号或数字信号。
可鉴于下文条款描述本公开的实施方案:
1.一种系统,其包括:
一个或多个计算装置,其被配置来实施分布式队列系统,其中所述分布式队列系统包括多个队列服务器,且其中所述分布式队列系统被配置来:
接收多个消息,其中所述多个消息中的每个包括严格次序参数的相应值;
基于所述严格次序参数的所述相应值,将所述多个消息中的每个转发到所述多个队列服务器的相应队列服务器,其中在所述多个队列服务器中划分所述严格次序参数的值的范围;
将相应顺序识别符指派给所述相应队列服务器处的所述多个消息中的每个,其中所述相应顺序识别符指示在所述严格次序参数的所述相应值的消息顺序中的相应位置,且其中所述相应位置基于所述相应队列服务器处的接收时间;和
基于所述相应顺序识别符,使所述多个消息入队,其中包括所述严格次序参数的第一值的所述多个消息中的消息相对于彼此按严格次序入队,且其中包括所述严格次序参数的第二值的所述多个消息中的消息相对于彼此按严格次序入队。
2.根据条款1所述的系统,其中所述分布式队列系统还被配置来:
对于所述多个消息中的单独消息,将具有所述相应顺序识别符的所述消息从所述相应队列服务器发送到所述多个队列服务器中的一个或多个备份队列服务器;和
对于所述多个消息中的单独消息,响应于接收来自所述一个或多个备份队列服务器的接收确认,将使所述消息入队的确认发送到对应队列提供者。
3.根据任何前述条款所述的系统,其中所述分布式队列系统还被配置来:
基于所述多个队列服务器处的负载或所述多个队列服务器的可用性,再平衡在所述多个队列服务器中划分的所述严格次序参数的所述值的范围。
4.一种计算机实施方法,其包括:
基于多个消息中的每个的严格次序参数的相应值,将所述消息分配给多个队列服务器,其中将共享所述严格次序参数的相应值的所述消息中的单独消息分配给所述队列服务器中的相应一个;
将相应顺序识别符指派给所述相应队列服务器处的所述多个消息中的单独消息,其中每个相应顺序识别符指示在所述严格次序参数的所述值中的对应一个的消息顺序中的相应位置,且其中所述相应位置基于所述相应队列服务器处的接收时间;和
基于所述相应顺序识别符,使所述多个消息入队。
5.根据条款4所述的方法,其还包括,对于所述多个消息中的单独消息:
将具有所述相应顺序识别符的所述消息从所述相应队列服务器发送到一个或多个备份队列服务器;和
响应于接收来自所述一个或多个备份队列服务器的接收确认,将使所述消息入队的确认发送到所述消息的提供者。
6.根据条款5所述的方法,其还包括,对于所述多个消息中的单独消息:
将所述消息将由使用者处理的指示发送到所述一个或多个备份队列服务器;
通过所述使用者接收所述消息的接收确认;和
响应于通过所述使用者接收所述消息的接收确认,将所述消息标记为锁定在所述相应队列服务器上和所述一个或多个备份队列服务器上。
7.根据条款4-6所述的方法,其还包括:
基于所述多个队列服务器处的负载或所述多个队列服务器的可用性,在所述多个队列服务器中再平衡所述严格次序参数的所述值的分配。
8.根据条款4-7所述的方法,其还包括:
将共享所述严格次序参数的相应值的所述入队的消息中的单独消息分配给相应使用者。
9.根据条款4-8所述的方法,其中,对于所述多个消息中的单独消息,通过队列提供者指派所述严格次序参数的所述相应值。
10.一种系统,其包括:
至少一个处理器;
存储器,其耦接到所述至少一个处理器,其中所述存储器存储程序指令,其中所述程序指令可由所述至少一个处理器执行以:
接收第一组消息,其包括第一严格次序参数;
接收第二组消息,其包括第二严格次序参数;
将相应队列识别符指派给所述第一组消息中的每个和所述第二组消息中的每个,其中所述第一组消息的每个相应队列识别符指示在所述第一严格次序参数的消息顺序中的相应位置,其中所述第二组消息的每个相应队列识别符指示在所述第二严格次序参数的消息顺序中的相应位置;
基于所述第一组消息的所述相应队列识别符,使所述第一组消息按次序入队;和
基于所述第二组消息的所述相应队列识别符,使所述第二组消息按次序入队。
11.根据条款10所述的系统,其中所述程序指令可由所述至少一个处理器执行以:
将具有所述相应队列识别符的所述第一组消息中的第一个发送到一个或多个备份队列服务器;和
响应于接收来自所述一个或多个备份队列服务器的接收确认,将使所述第一组消息中的所述第一个入队的确认发送到所述第一组消息中的所述第一个的源。
12.根据条款11所述的系统,其中所述程序指令可由所述至少一个处理器执行以:
将所述第一组消息中的所述第一个将由使用者处理的指示发送到所述一个或多个备份队列服务器;
通过所述使用者接收所述第一组消息中的所述第一个的接收确认;和
响应于通过所述使用者接收接收确认,将所述第一组消息中的所述第一个标记为锁定在所述一个或多个备份队列服务器上。
13.根据条款10-12中任一条款所述的系统,其中所述程序指令可由所述至少一个处理器执行以:
将共享所述严格次序参数中的一个的所述入队的消息中的单独消息分配给相应使用者。
14.根据条款10-13中任一条款所述的系统,其中通过一个或多个队列提供者将所述严格次序参数的所述第一值指派给所述第一组消息。
15.一种存储程序指令的计算机可读存储介质,所述程序指令可由计算机执行以进行:
基于多个消息的相应严格次序参数,将所述消息发送到多个队列服务器,其中将共享相应严格次序参数的所述消息中的单独消息发送到所述队列服务器中的相应一个;
确定所述相应队列服务器处的所述多个消息中的单独消息的相应顺序识别符,其中每个相应顺序识别符指示在所述严格次序参数的对应一个的消息顺序中的相应位置,且其中所述相应位置基于所述相应队列服务器处的接收时间;和
基于所述相应顺序识别符,使所述多个消息入队。
16.根据条款15所述的计算机可读存储介质,其中,对于所述多个消息中的单独消息,所述程序指令还可由计算机执行以进行:
将具有所述相应顺序识别符的所述消息从所述相应队列服务器发送到一个或多个备份队列服务器;和
响应于接收来自所述一个或多个备份队列服务器的接收确认,发送使所述消息入队的确认。
17.根据条款16所述的计算机可读存储介质,其中,对于所述多个消息中的单独消息,所述程序指令还可由计算机执行以进行:
将所述消息将由使用者处理的指示发送到所述一个或多个备份队列服务器;
通过所述使用者接收所述消息的接收确认;和
响应于通过所述使用者接收所述消息的接收确认,将所述消息标记为锁定在所述相应队列服务器上和所述一个或多个备份队列服务器上。
18.根据条款15-17中任一条款所述的计算机可读存储介质,其中所述程序指令还可由计算机执行以进行:
基于所述多个队列服务器处的负载或所述多个队列服务器的可用性,在所述多个队列服务器中再平衡所述严格次序参数的分配。
19.根据条款15-18中任一条款所述的计算机可读存储介质,其中所述程序指令还可由计算机执行以进行:
将共享相应严格次序参数的所述入队的消息中的单独消息分配给相应使用者。
20.根据条款15-19中任一条款所述的计算机可读存储介质,其中,对于所述多个消息中的单独消息,通过相应队列提供者指派所述相应严格次序参数。
如在图中所说明且在本文中所述的各种方法表示示例性方法实施方案。可以以软件、硬件或其组合实施所述方法。在各种所述方法中,步骤次序可以变化,且各个元件可以被添加、被再排序、被组合、被省略、被修改等。可以自动地(例如,并非由用户输入直接促成)和/或可编程地(例如,根据程序指令)执行各个步骤。
如将对受益于本公开的所属领域熟练技术人员显而易见的是,可以作出各种修改和变化。。意图涵盖所有这些修改和变化,且因此在说明性而非限制性意义上看待上文描述。

Claims (15)

1.一种计算机实施方法,其包括:
基于多个消息中的每个的严格次序参数的相应值,将所述消息分配给多个队列服务器,其中将共享所述严格次序参数的相应值的所述消息中的单独消息分配给所述队列服务器中的相应一个;
将相应顺序识别符指派给所述相应队列服务器处的所述多个消息中的单独消息,其中每个相应顺序识别符指示在所述严格次序参数的所述值中的对应一个的消息顺序中的相应位置,且其中所述相应位置基于所述相应队列服务器处的接收时间;和
基于所述相应顺序识别符,使所述多个消息入队。
2.根据权利要求1所述的方法,其还包括,对于所述多个消息中的单独消息:
将具有所述相应顺序识别符的所述消息从所述相应队列服务器发送到一个或多个备份队列服务器;和
响应于接收来自所述一个或多个备份队列服务器的接收确认,将使所述消息入队的确认发送到所述消息的提供者。
3.根据权利要求2所述的方法,其还包括,对于所述多个消息中的单独消息:
将所述消息将由使用者处理的指示发送到所述一个或多个备份队列服务器;
通过所述使用者接收所述消息的接收确认;和
响应于通过所述使用者接收所述消息的接收确认,将所述消息标记为锁定在所述相应队列服务器上和所述一个或多个备份队列服务器上。
4.根据任何前述权利要求所述的方法,其还包括:
基于所述多个队列服务器处的负载或所述多个队列服务器的可用性,在所述多个队列服务器中再平衡所述严格次序参数的所述值的分配。
5.根据任何前述权利要求所述的方法,其还包括:
将共享所述严格次序参数的相应值的所述入队的消息中的单独消息分配给相应使用者。
6.根据任何前述权利要求所述的方法,其中,对于所述多个消息中的单独消息,通过队列提供者指派所述严格次序参数的所述相应值。
7.一种系统,其包括:
至少一个处理器;
存储器,其耦接到所述至少一个处理器,其中所述存储器存储程序指令,其中所述程序指令可由所述至少一个处理器执行以:
接收第一组消息,其包括第一严格次序参数;
接收第二组消息,其包括第二严格次序参数;
将相应队列识别符指派给所述第一组消息中的每个和所述第二组消息中的每个,其中所述第一组消息的每个相应队列识别符指示在所述第一严格次序参数的消息顺序中的相应位置,其中所述第二组消息的每个相应队列识别符指示在所述第二严格次序参数的消息顺序中的相应位置;
基于所述第一组消息的所述相应队列识别符,使所述第一组消息按次序入队;和
基于所述第二组消息的所述相应队列识别符,使所述第二组消息按次序入队。
8.根据权利要求7所述的系统,其中所述程序指令可由所述至少一个处理器执行以:
将具有所述相应队列识别符的所述第一组消息中的第一个发送到一个或多个备份队列服务器;和
响应于接收来自所述一个或多个备份队列服务器的接收确认,将使所述第一组消息中的所述第一个入队的确认发送到所述第一组消息中的所述第一个的源。
9.根据权利要求8所述的系统,其中所述程序指令可由所述至少一个处理器执行以:
将所述第一组消息中的所述第一个将由使用者处理的指示发送到所述一个或多个备份队列服务器;
通过所述使用者接收所述第一组消息中的所述第一个的接收确认;和
响应于通过所述使用者接收接收确认,将所述第一组消息中的所述第一个标记为锁定在所述一个或多个备份队列服务器上。
10.根据权利要求7-9中任一权利要求所述的系统,其中所述程序指令可由所述至少一个处理器执行以:
将共享所述严格次序参数中的一个的所述入队的消息中的单独消息分配给相应使用者。
11.根据权利要求7-10中任一权利要求所述的系统,其中通过一个或多个队列提供者将所述严格次序参数的所述第一值指派给所述第一组消息。
12.一种存储程序指令的计算机可读存储介质,所述程序指令可由计算机执行以进行:
基于多个消息的相应严格次序参数,将所述消息发送到多个队列服务器,其中将共享相应严格次序参数的所述消息中的单独消息发送到所述队列服务器中的相应一个;
确定所述相应队列服务器处的所述多个消息中的单独消息的相应顺序识别符,其中每个相应顺序识别符指示在所述严格次序参数的对应一个的消息顺序中的相应位置,且其中所述相应位置基于所述相应队列服务器处的接收时间;和
基于所述相应顺序识别符,使所述多个消息入队。
13.根据权利要求12所述的计算机可读存储介质,其中,对于所述多个消息中的单独消息,所述程序指令还可由计算机执行以进行:
将具有所述相应顺序识别符的所述消息从所述相应队列服务器发送到一个或多个备份队列服务器;和
响应于接收来自所述一个或多个备份队列服务器的接收确认,发送使所述消息入队的确认。
14.根据权利要求13所述的计算机可读存储介质,其中,对于所述多个消息中的单独消息,所述程序指令还可由计算机执行以进行:
将所述消息将由使用者处理的指示发送到所述一个或多个备份队列服务器;
通过所述使用者接收所述消息的接收确认;和
响应于通过所述使用者接收所述消息的接收确认,将所述消息标记为锁定在所述相应队列服务器上和所述一个或多个备份队列服务器上。
15.根据权利要求12-14中任一权利要求所述的计算机可读存储介质,其中所述程序指令还可由计算机执行以进行:
基于所述多个队列服务器处的负载或所述多个队列服务器的可用性,在所述多个队列服务器中再平衡所述严格次序参数的分配。
CN201480060776.0A 2013-11-06 2014-11-06 分布式系统中的严格排队 Pending CN105765555A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/073,517 US9654408B2 (en) 2013-11-06 2013-11-06 Strict queue ordering in a distributed system
US14/073,517 2013-11-06
PCT/US2014/064392 WO2015069928A1 (en) 2013-11-06 2014-11-06 Strict queue ordering in a distributed system

Publications (1)

Publication Number Publication Date
CN105765555A true CN105765555A (zh) 2016-07-13

Family

ID=53007894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480060776.0A Pending CN105765555A (zh) 2013-11-06 2014-11-06 分布式系统中的严格排队

Country Status (5)

Country Link
US (1) US9654408B2 (zh)
EP (1) EP3066578B1 (zh)
CN (1) CN105765555A (zh)
CA (1) CA2928865C (zh)
WO (1) WO2015069928A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108681578A (zh) * 2018-05-10 2018-10-19 腾讯科技(深圳)有限公司 一种业务数据存储方法、装置、服务器及存储介质
CN113301009A (zh) * 2021-02-23 2021-08-24 阿里巴巴集团控股有限公司 一种顺序消息的处理方法及装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015106B1 (en) * 2015-04-06 2018-07-03 EMC IP Holding Company LLC Multi-cluster distributed data processing platform
US10706970B1 (en) 2015-04-06 2020-07-07 EMC IP Holding Company LLC Distributed data analytics
US11005933B2 (en) * 2016-03-17 2021-05-11 International Business Machines Corporation Providing queueing in a log streaming messaging system
CN107911278B (zh) * 2017-10-11 2021-02-02 五八有限公司 消息的排序方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1643506A (zh) * 2002-03-29 2005-07-20 国际商业机器公司 公共工作队列环境中的最适宜服务器
CN1971521A (zh) * 2005-11-25 2007-05-30 国际商业机器公司 用于保留消息顺序的系统和方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5617538A (en) * 1991-07-02 1997-04-01 Tm Patents, L.P. Message transfer system and method for parallel computer with message transfers being scheduled by skew and roll functions to avoid bottlenecks
US5901291A (en) * 1996-10-21 1999-05-04 International Business Machines Corporation Method and apparatus for maintaining message order in multi-user FIFO stacks
US6493343B1 (en) 1998-01-07 2002-12-10 Compaq Information Technologies Group System and method for implementing multi-pathing data transfers in a system area network
US20020107903A1 (en) 2000-11-07 2002-08-08 Richter Roger K. Methods and systems for the order serialization of information in a network processing environment
US7454751B2 (en) 2001-06-07 2008-11-18 Intel Corporation Fault-tolerant system and methods with trusted message acknowledgement
US20030041073A1 (en) * 2001-08-21 2003-02-27 Collier Josh D. Method and apparatus for reordering received messages for improved processing performance
US20030093576A1 (en) * 2001-11-13 2003-05-15 International Business Machines Corporation Method and system for message management
US7406537B2 (en) * 2002-11-26 2008-07-29 Progress Software Corporation Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes
CA2372092C (en) * 2002-02-15 2010-04-06 Cognos Incorporated A queuing model for a plurality of servers
US7003644B2 (en) 2002-03-28 2006-02-21 Seagate Technology Llc Execution time dependent command schedule optimization
US7155438B2 (en) 2002-05-01 2006-12-26 Bea Systems, Inc. High availability for event forwarding
US7272144B2 (en) * 2002-06-26 2007-09-18 Arris International, Inc. Method and apparatus for queuing data flows
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US20040100900A1 (en) * 2002-11-25 2004-05-27 Fulcrum Microsystems, Inc. Message transfer system
US7177982B2 (en) * 2004-01-16 2007-02-13 International Business Machines Corporation Method to maintain order between multiple queues with different ordering requirements in a high frequency system
US7502843B2 (en) * 2004-12-30 2009-03-10 Microsoft Corporation Server queuing system and method
US20080148280A1 (en) 2006-12-13 2008-06-19 Stillwell Joseph W Apparatus, system, and method for autonomically managing multiple queues
US8954994B2 (en) * 2007-04-23 2015-02-10 Oracle International Corporation System and method for message service with unit-of-order
US8514872B2 (en) 2007-06-19 2013-08-20 Virtual Hold Technology, Llc Accessory queue management system and method for interacting with a queuing system
US7843928B2 (en) * 2007-09-25 2010-11-30 Alcatel Lucent Egress traffic management system for a data communications system
US8565250B2 (en) * 2010-05-18 2013-10-22 Lsi Corporation Multithreaded, superscalar scheduling in a traffic manager of a network processor
US8869150B2 (en) * 2010-05-18 2014-10-21 Lsi Corporation Local messaging in a scheduling hierarchy in a traffic manager of a network processor
US8848723B2 (en) * 2010-05-18 2014-09-30 Lsi Corporation Scheduling hierarchy in a traffic manager of a network processor
US8576862B2 (en) * 2010-05-18 2013-11-05 Lsi Corporation Root scheduling algorithm in a network processor
US9160684B2 (en) * 2009-04-27 2015-10-13 Intel Corporation Dynamic updating of scheduling hierarchy in a traffic manager of a network processor
US8949182B2 (en) 2011-06-17 2015-02-03 International Business Machines Corporation Continuous and asynchronous replication of a consistent dataset
US8627333B2 (en) * 2011-08-03 2014-01-07 International Business Machines Corporation Message queuing with flexible consistency options
US8607249B2 (en) * 2011-09-22 2013-12-10 Oracle International Corporation System and method for efficient concurrent queue implementation
CN104079614B (zh) * 2013-03-29 2017-09-12 国际商业机器公司 用于分布式发布订阅系统消息有序获取的方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1643506A (zh) * 2002-03-29 2005-07-20 国际商业机器公司 公共工作队列环境中的最适宜服务器
CN1971521A (zh) * 2005-11-25 2007-05-30 国际商业机器公司 用于保留消息顺序的系统和方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108681578A (zh) * 2018-05-10 2018-10-19 腾讯科技(深圳)有限公司 一种业务数据存储方法、装置、服务器及存储介质
CN108681578B (zh) * 2018-05-10 2021-07-16 腾讯科技(深圳)有限公司 一种业务数据存储方法、装置、服务器及存储介质
CN113301009A (zh) * 2021-02-23 2021-08-24 阿里巴巴集团控股有限公司 一种顺序消息的处理方法及装置

Also Published As

Publication number Publication date
CA2928865C (en) 2018-09-04
US9654408B2 (en) 2017-05-16
EP3066578A1 (en) 2016-09-14
EP3066578A4 (en) 2017-08-02
EP3066578B1 (en) 2020-01-08
WO2015069928A1 (en) 2015-05-14
US20150127769A1 (en) 2015-05-07
CA2928865A1 (en) 2015-05-14

Similar Documents

Publication Publication Date Title
CN110402431B (zh) 使用有向无环图进行事件驱动的调度
US10642654B2 (en) Storage lifecycle pipeline architecture
US10853337B2 (en) Lifecycle transition validation for storage objects
US11210185B2 (en) Method and system for data recovery in a data system
CN105765555A (zh) 分布式系统中的严格排队
US9355060B1 (en) Storage service lifecycle policy transition management
US8903925B2 (en) Scheduled messages in a scalable messaging system
US10133797B1 (en) Distributed heterogeneous system for data warehouse management
CN103201724A (zh) 在高可用性虚拟机环境中提供高可用性应用程序
Smets-Solanes et al. Slapos: A multi-purpose distributed cloud operating system based on an erp billing model
US9852220B1 (en) Distributed workflow management system
US20150381709A1 (en) Input/output management in a distributed strict queue
US9843528B2 (en) Client selection in a distributed strict queue
US9584593B2 (en) Failure management in a distributed strict queue
JP2017530453A (ja) ワークフロー実行におけるシステムリソースの平等シェアリング
US9575820B2 (en) Client control in a distributed strict queue
CN104219235A (zh) 一种分布式交易请求方法及装置
US9973306B2 (en) Freshness-sensitive message delivery
CN105847231A (zh) 服务发布方法、装置及系统
US20220171791A1 (en) Replicating large statements with low latency
CN104580428B (zh) 一种数据路由方法、数据管理装置和分布式存储系统
US9577878B2 (en) Geographic awareness in a distributed strict queue
US11068487B2 (en) Event-stream searching using compiled rule patterns
US9336063B1 (en) Distributed task management
US11531642B2 (en) Synchronous object placement for information lifecycle management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160713