CN116266129A - 分布式计算系统中的多领导者选举 - Google Patents
分布式计算系统中的多领导者选举 Download PDFInfo
- Publication number
- CN116266129A CN116266129A CN202111558591.0A CN202111558591A CN116266129A CN 116266129 A CN116266129 A CN 116266129A CN 202111558591 A CN202111558591 A CN 202111558591A CN 116266129 A CN116266129 A CN 116266129A
- Authority
- CN
- China
- Prior art keywords
- participant
- leader
- processing tasks
- nodes
- participants
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在说明性实施方案中,一种设备包括至少一个处理装置,所述至少一个处理装置包括耦合到存储器的处理器。所述至少一个处理装置被配置为:与用于一个或多个分布式应用程序的协调服务一起建立在分布式计算系统中实现的多领导者选举算法中的给定的参与者的参与者标识符,所述分布式计算系统包括多个计算节点,所述计算节点对应于具有相应的参与者标识符的参与者;以及在执行所述多领导者选举算法的迭代时与所述协调服务交互,以确定所述参与者中的相应的参与者作为所述分布式计算系统的相应的处理任务的领导者的当前指派。在一些实施方案中,所述至少一个处理装置包括所述分布式计算系统的所述计算节点中的特定计算节点的至少一部分,并且所述协调服务包括一个或多个外部服务器。
Description
技术领域
该领域总体上涉及包括节点集群的分布式计算系统,并且更具体地,涉及此类系统内的领导者选举。
背景技术
各种各样不同类型的分布式计算系统是已知的。例如,基于开源Kubernetes容器编排平台的分布式计算系统包括节点集群,每个节点实现容器的一个或多个“容器集(pod)”以执行分布式应用程序的容器化工作负载。需要用于这些和其他分布式计算系统,特别是关于领导者选举的改进的技术。
发明内容
分布式计算系统中出现的技术问题与领导者选举有关,因为常规的方法通常需要在任何给定的时间仅选举节点中的特定节点作为领导者,这可能会导致当前被选举为领导者的特定节点的处理瓶颈。
本文所公开的说明性实施方案提供了用于分布式计算系统中的多领导者选举的技术。例如,一些实施方案通过将集群的多个节点配置为彼此协作来以有助于平衡节点上的处理任务的方式为相应的处理任务选举多个领导者来提供上述技术问题的技术解决方案,从而带来分布式计算系统内的整体性能的提高。
在一个实施方案中,一种设备包括至少一个处理装置,所述至少一个处理装置包括耦合到存储器的处理器。所述至少一个处理装置被配置为:与用于一个或多个分布式应用程序的协调服务一起建立在分布式计算系统中实现的多领导者选举算法中的给定的参与者的参与者标识符,所述分布式计算系统包括多个计算节点,所述计算节点对应于具有相应的参与者标识符的参与者;以及在执行所述多领导者选举算法的迭代时与所述协调服务交互,以确定所述参与者中的相应的参与者作为所述分布式计算系统的相应的处理任务的领导者的当前指派。
在一些实施方案中,所述至少一个处理装置说明性地包括所述分布式计算系统的所述计算节点中的特定计算节点的至少一部分,并且所述协调服务包括在所述分布式计算系统外部的一个或多个服务器。
在一些实施方案中,所述协调服务包括开源Apache ZooKeeper协调服务,但在其他实施方案中,可使用其他类型的协调服务。
在一些实施方案中,与用于一个或多个分布式应用程序的协调服务一起建立多领导者选举算法中的给定的参与者的参与者标识符说明性包括:请求将所述给定的参与者的参与者标识符树节点创建为顺序且短暂的节点;以及响应于所述请求而接收所述给定的参与者的所述参与者标识符。
另外地或替代地,在一些实施方案中,在执行所述多领导者选举算法的迭代时与所述协调服务交互说明性地包括:从所述协调服务获得参与者标识符树节点和选举结果树节点的值;以及利用所述获得的值来维护堆栈数据结构,其中至少部分地基于参与者作为领导者被指派的处理任务的数量而将所述参与者分类为所述堆栈数据结构的条目。响应于所述处理任务中的至少一者当前没有指派的领导者,与所述协调服务交互包括:至少部分地基于特定参与者的条目在所述堆栈数据结构中的位置而将所述参与者指派给先前未指派的处理任务中的给定的处理任务;通过所述协调服务来更新所述堆栈数据结构以及所述选举结果树节点的一个或多个对应的值;以及重复所述指派和所述更新,直到领导者被指派给所有的所述处理任务为止。
这些和其他说明性实施方案包括但不限于设备、系统、方法以及处理器可读存储介质。
附图说明
图1是说明性实施方案中的包括分布式计算系统的信息处理系统的框图,该分布式计算系统包括实现多领导者选举的节点的集群。
图2是说明性实施方案中的用于多领导者选举的示例过程的流程图。
图3示出了说明性实施方案中的用于多领导者选举的参与者标识符树的示例。
图4示出了说明性实施方案中的用于多领导者选举的选举决策树和相关联的决策堆栈数据结构的示例。
图5示出了说明性实施方案中的用于多领导者选举的监视树的示例。
图6至图12示出了说明性实施方案中的使用参与者标识符树、选举决策树和相关联的决策堆栈数据结构的示例多领导者选举过程的操作。
图13和图14示出了说明性实施方案中的可用于实现信息处理系统的至少一部分的处理平台的示例。
具体实施方式
本文中将参考示例性信息处理系统和相关联的计算机、服务器、存储装置和其他处理装置来描述说明性实施方案。然而,应当了解,这些和其他实施方案不限于所示的特定说明性系统和装置配置。因此,如本文所用的术语“信息处理系统”意图被广泛地解释,以便涵盖例如包括云计算和存储系统的处理系统,以及包括物理和虚拟处理资源的各种组合的其他类型的处理系统。因此,信息处理系统可包括例如至少一个数据中心或包括托管共享云资源的多个租户的一个或多个云的其他基于云的系统。术语“信息处理系统”还涵盖了许多不同类型的企业计算和存储系统,如该术语在本文中广泛地使用的。
图1示出了根据说明性实施方案配置的信息处理系统100。信息处理系统100包括分布式计算系统102,该分布式计算系统被配置为通过一个或多个网络与用于由分布式计算系统102执行的一个或多个分布式应用程序且可能用于由图中未明确地示出的其他分布式计算系统执行的其他分布式应用程序的协调服务104通信。
协调服务104说明性地包括以本文中公开的方式适当地配置的用于分布式应用程序的开源协调服务,诸如众所周知的Apache ZooKeeper协调服务,但在其他实施方案中可使用其他类型的协调服务。
分布式计算系统102更具体地包括计算节点105-1、105-2、...105-M,在本文中统称为计算节点105。在一些实施方案中,分布式计算系统102被假定为基于开源Kubernetes容器编排平台,并且说明性地包括计算节点105的集群,每个计算节点实现容器的一个或多个容器集110以执行分布式应用程序的容器化工作负载。在该示例中,每个容器集110说明性地包括一组N个容器,该容器可为Docker容器或其他类型的Linux容器(LXC)。在其他实施方案中,容器集110-1、110-2、...110-M中的不同容器集可包括不同数量的容器。而且,在该实施方案中,值N和M表示被假定为大于或等于2的任意整数值。
在一些实施方案中,分布式计算系统102在本文中被称为“集群”,并且计算节点105被简称为“节点”。在一些实施方案中,每个节点包括单个容器集,而在其他实施方案中,节点中的一者或多者各自可包括多个容器集。
在一些实施方案中,计算节点105被实现为相应的主机装置并且被假定为具有与其相关联的永久性存储资源。主机装置说明性地包括企业计算机系统、基于云的计算机系统或分布式计算系统的多个计算节点的其他布置的服务器或其他类型的计算机。
其他分布式计算系统可包括不同数量和布置的计算节点,以及可能地一个或多个附加的部件。例如,在一些实施方案中,分布式计算系统可包括系统管理器,该系统管理器可在计算节点中的一者上或在一个或多个单独的节点上实现。
在一些实施方案中,计算节点可通过一个或多个网络与存储阵列或其他类型的存储系统交互。存储系统可包括例如包括多个存储节点的分布式存储系统,但许多其他布置是可能的。
计算节点105说明性地包括一个或多个处理平台的相应的处理装置。例如,计算节点105各自可包括一个或多个处理装置,每个处理装置具有处理器和存储器。
计算节点105可在公共处理平台上或在单独的处理平台上实现。
在一些实施方案中,使用云基础设施来实现计算节点105。例如,计算节点105可被配置为根据平台即服务(PaaS)模型、基础设施即服务(IaaS)模型和/或功能即服务(FaaS)模型来为用户提供计算服务,但应当了解,可使用许多其他云基础设施布置。而且,说明性实施方案可在云基础设施背景之外实现,就像在给定的企业内实现的独立式计算和存储系统的情况一样。
计算节点105经由一个或多个网络彼此通信并且与协调服务104通信。在一些实施方案中,给定的这种网络被假定为包括诸如互联网的全球计算机网络的一部分,但附加或替代类型的网络可为该网络的一部分,包括广域网(WAN)、局域网(LAN)、卫星网络、电话或电缆网络、蜂窝网络(诸如4G或5G蜂窝网络)、无线网络(诸如WiFi或WiMAX网络),或这些和其他类型网络的各个部分或组合。因此,在一些实施方案中,网络包括多种不同类型的网络的组合,每个网络包括被配置为使用互联网协议(IP)或其他通信协议进行通信的处理装置。
作为更特定的示例,一些实施方案可利用一个或多个高速局域网络,其中相关联的处理装置利用那些装置的外围部件快速互连(PCIe)卡和诸如无限带宽、吉比特以太网或光纤通道的联网协议彼此通信。在给定的实施方案中,如本领域技术人员将了解的,许多替代的联网布置是可能的。
在一些实施方案中,分布式计算系统102的计算节点105在全网状网络中彼此互连。
如先前所指示,计算节点105共同地构成分布式计算系统的一个可能的实现方式的示例。如本文所用的术语“分布式计算系统”意图被广泛地解释,以便涵盖计算节点的许多其他集群。如本文所用的术语“计算节点”也意图被广泛地解释,以便涵盖例如除了用于执行一个或多个分布式应用程序的计算资源之外另外地实现存储和网络资源的一个或多个处理装置。
计算节点105说明性地通过执行一个或多个分布式应用程序的处理任务来提供各种服务。通常需要计算节点105共同同意它们中的一者将在一个或多个此类处理任务方面充当领导者。
如先前所指示,分布式计算系统中出现的技术问题在于,常规的方法通常需要在任何给定的时间仅选举节点中的特定节点作为领导者,这可能会导致当前被选举为领导者的特定节点的处理瓶颈。例如,在Kubernetes上下文中,可通过简单地在给定的部署中添加更多的容器集来实现负载缩放。每个这种容器集说明性地表示集群中的节点并且可运行相同的容器图像,其中工作负载均匀地分布在这些节点之间。然而,如果这种部署中需要领导者,那么容器集中的一者将充当领导者并且将运行被指派给领导者的附加任务。因此,领导者容器集可能会成为部署的性能瓶颈。外部工作负载可卸载到附加的容器集,但针对领导者的指定任务只能在一个容器集上运行。
在本文中的说明性实施方案中,计算节点105有利地被配置为通过执行涉及与协调服务104交互的多领导者选举算法而在分布式计算系统102中实现多领导者选举的功能。
例如,一些实施方案通过将计算节点105配置为彼此协作来以有助于平衡计算节点105上的处理任务的方式为相应的处理任务选举多个领导者来提供上述技术问题的技术解决方案,从而带来分布式计算系统102内的整体性能的提高。
所公开的布置有利地避免了单个领导者因运行一系列指定的仅供领导者处理任务而过载的情形。代替将单个节点选举为领导者来运行所有这些处理任务,说明性实施方案通过由每个节点执行的多领导者选举算法来允许多个节点承担这些任务的责任。在此类布置中,领导者责任在多个节点之间有效地共享。
在一些实施方案中,当节点加入集群或离开集群时会触发多领导者选举过程。在该过程完成之后,所有运行的节点都对选举结果达成共识。
例如,假定T是任务数量并且N是节点数量。在一些实施方案中,多领导者选举算法被配置为使得多个领导者如下指派给不同的处理任务:
如果T=N,那么每个节点被指派为一个任务的领导者;
如果T<N,那么每个节点被指派为一个或零个任务的领导者;并且
如果T>N,那么每个节点被指派为int(T/N)或int(T/N)+1个任务的领导者,其中“int(·)”表示整数函数。
在其他实施方案中,可根据多领导者选举来提供其他类型的任务指派。
在一些实施方案中,多领导者选举算法说明性地确保任务基本上均匀地指派给可用的节点,而不管任务的数量和节点的数量如何。该算法还可处理节点的数量按比例增加或按比例减少的情形。
如先前所指示,图1的分布式计算系统102的计算节点105与协调服务104交互,并且更具体地与协调服务104的一个或多个服务器106交互,其中一个或多个服务器106存储参与者标识符树、选举结果树和监视树以用于由计算节点105执行的多领导者选举。此类树是本文中更一般地称为“数据结构”的示例,所述数据结构由协调服务104维护以用于由计算节105协作地执行的多领导者选举。在其他实施方案中,可使用其他类型的数据结构。一个或多个服务器106是在分布式计算系统102的“外部”的服务器的示例。在这个背景下,术语“外部”意图被广泛地解释,以便涵盖例如分布式计算系统102的计算节点105中的一者或多者通过网络可访问但不在那一个或多个计算节点105内实现的服务器。
计算节点105利用相应的计算节点105内的多领导者选举逻辑112-1、112-2、...112-M的相应的实例与相应的决策堆栈114-1、114-2、...114-M的组合来实现多领导者选举功能的相应的部分。
在操作中,计算节点105中的给定的计算节点与协调服务104一起建立该节点的参与者标识符以作为在分布式计算系统102中实现的多领导者选举算法的参与者。在一些实施方案中,计算节点105对应于具有相应的参与者标识符的参与者,但其他布置是可能的。给定的计算节点在执行多领导者选举算法的迭代时与协调服务104交互,以确定参与者中的相应的参与者作为分布式计算系统102的相应的处理任务的领导者的当前指派。假定计算节点105中的每一者类似地执行此类操作。
如上所述,协调服务104经由其一个或多个服务器106来维护一个或多个数据结构以用于在分布式计算系统102中实现的多领导者选举算法。
在一些实施方案中,一个或多个数据结构至少包括参与者标识符树和选举结果树,其中如在图3的示例中所示,参与者标识符树包括参与者标识符中的相应的参与者标识符的多个叶节点,并且如在图4的示例中所示,选举结果树包括指示当前被选举为处理任务中的相应的处理任务的领导者的参与者中的相应的参与者的多个叶节点。本文中其他地方更详细地描述了这些示例参与者标识符树和选举结果树。
在一些实施方案中,给定的计算节点说明性地通过以下方式来与协调服务104一起建立该节点的参与者标识符以作为多领导者选举算法中的给定的参与者:请求将给定的参与者的参与者标识符树节点创建为顺序且短暂的节点,并且响应于请求而接收给定的参与者的参与者标识符。如本文在这个背景下使用的诸如“请求”和“在请求”的术语意图被广泛地解释,以便涵盖给定的计算节点与协调服务交互以建立参与者标识符所利用的各种各样不同的布置。
另外地或替代地,给定的计算节点说明性地在执行多领导者选举算法的迭代时通过以下方式与协调服务104交互:从协调服务104获得参与者标识符树节点和选举结果树节点的值,并且利用所获得的值来维护堆栈数据结构,其中至少部分地基于参与者作为领导者被指派的处理任务的数量而将所述参与者分类为堆栈数据结构的条目。计算节点105的决策堆栈114是此类堆栈数据结构的示例。由给定的计算节点维护的堆栈数据结构的另一个示例也在图4中示出,并且在本文中其他地方更详细地描述。
响应于处理任务中的至少一者当前没有指派的领导者,给定的计算节点至少部分地基于特定参与者的条目在堆栈数据结构中的位置而将所述参与者指派给先前未指派的处理任务中的给定的处理任务,通过协调服务来更新堆栈数据结构以及选举结果树节点的一个或多个对应的值,并且重复指派和更新,直到领导者被指派给所有的处理任务为止。
在一些实施方案中,堆栈数据结构的条目的至少一个子集中的每一者包括参与者标识符以及指示对应的参与者作为领导者被指派的处理任务中的一者或多者的信息。
堆栈数据结构的条目说明性地按对应的参与者作为领导者被指派的处理任务的数量增加的次序进行组织,其中参与者中的具有最高数量的指派的处理任务的第一参与者在堆栈数据结构中具有最低条目,并且参与者中的具有最低数量的指派的处理任务的第二参与者在堆栈数据结构中具有最高条目,其中具有相同数量的指派的处理任务的参与者的条目定位利用其相应的参与者标识符来解决。应当了解,可使用其他类型和配置的堆栈数据结构。
在一些实施方案中,至少部分地基于特定参与者的条目在堆栈数据结构中的位置而将该参与者指派给先前未指派的处理任务中的给定的处理任务说明性地包括将在堆栈数据结构中具有最高条目的参与者指派为给定的处理任务的领导者。
另外地或替代地,给定的计算节点说明性地被配置为响应于检测到指派给参与者中的具有最高数量的指派的处理任务的第一参与者和参与者中的具有最低数量的指派的处理任务的第二参与者的处理任务的相应的数量之间的至少阈值差值而重新平衡参与者之间的任务指派。
重新平衡参与者之间的任务指派说明性地包括将处理任务中的至少一者从第一参与者重新指派给第二参与者,并且通过协调服务来更新堆栈数据结构以及选举结果树节点的一个或多个对应的值。
在一些实施方案中,在执行多领导者选举算法的迭代时与协调服务交互说明性地包括根据协调服务104的监视工具在参与者之间建立监视环路的至少一部分,并且利用监视环路来检测参与者中的一者或多者退出参与多领导者选举算法。基于协调服务104的监视工具的监视树的示例在图5中示出,并且在本文中其他地方更详细地描述。
监视环路说明性地至少部分地基于参与者标识符而进行配置,其中每个参与者根据其相应的参与者标识符来监控参与者中的在监视环路中与其相邻的另一个参与者。在其他实施方案中,可使用其他类型的监视环路或参与者退出机制。
在一些实施方案中,给定的计算节点还被配置为针对由分布式计算系统102执行的分布式应用程序中的至少一者,经由协调服务104来确定给定的参与者当前是否被指派为处理任务中的特定处理任务的领导者,并且响应于肯定的确定,使给定的参与者执行特定处理任务。
上文结合图1描述的特定的多领导者选举特征和功能无论如何都不应解释为限制,并且诸如协调服务104和计算节点105以及其相关联的多领导者选举逻辑112和对应的决策堆栈114的系统部件的各种各样其他分布式实现方式是可能的。
图1所示的示例分布式计算系统102的计算节点105被假定为使用至少一个处理平台来实现,其中每个这样的处理平台包括一个或多个处理装置,并且每个这样的处理装置包括耦合到存储器的处理器。此类处理装置可说明性地包括计算、存储和网络资源的特定布置。
替代地,计算节点105可在相应的不同的处理平台上实现,但许多其他布置是可能的。例如,计算节点105的不同子集可在相应的不同的处理平台上实现。
类似地,协调服务104说明性地使用实现一个或多个服务器106的一个或多个处理平台来实现,该一个或多个服务器被配置为存储参与者标识符树、选举结果树、监视树和/或附加或替代的用于多领导者选举的数据结构。
如本文所用的术语“处理平台”意图被广泛地解释,以便涵盖(作为举例而非限制)被配置为通过一个或多个网络进行通信的多组处理装置和相关联的存储系统。例如,系统100的某些部件可驻留在处于第一地理位置的一个数据中心中,而系统100的其他部件驻留在处于可能远离第一地理位置的一个或多个其他地理位置的一个或多个其他数据中心中。因此,在系统100的一些实现方式中,计算节点105的不同子集可能驻留在不同的数据中心中。在其他实施方案中,计算节点105和协调服务104的一个或多个服务器106的许多其他分布式实现方式是可能的。
在说明性实施方案中用于实现分布式计算系统和可能地相关联的协调服务的处理平台的附加示例将在下文结合图13和图14更详细地描述。
应当了解,说明性实施方案的这些和其他特征仅通过示例的方式呈现,并且无论如何都不应解释为限制。
因此,在其他实施方案中,可使用不同数量、类型和布置的系统部件,诸如分布式计算系统102、协调服务104和计算节点105。
应当理解,仅通过示例的方式呈现特定的模块组以及如图1所示在分布式计算系统中实现的其他部件。在其他实施方案中,可仅使用这些部件的子集或者可使用附加或替代的多组部件,并且此类部件可展现出替代的功能和配置。
例如,在其他实施方案中,如本文所公开的多领导者选举功能的某些部分可在计算节点105中的一者或多者的多个处理装置上实现。
现在将参考图2的说明性实施方案的流程图进一步详细地描述信息处理系统100的操作,该说明性实施方案实现了用于在分布式计算系统中实现多领导者选举的过程。该过程可被视作包括至少部分地由图1的分布式计算系统的计算节点105执行的示例多领导者选举算法。例如,这种算法说明性地至少部分地利用计算节点105中的相应的计算节点中的多领导者选举逻辑112的一个或多个实例来执行。本文所公开的这些和其他算法更一般地适用于各自包括两个或更多个计算节点的各种各样其他分布式计算系统。
现在参考图2,如图所示的多领导者选举过程包括步骤200至210,并且说明性地由计算节点105中的给定的计算节点执行,但假定其他计算节点105中的每一者类似地执行该过程,使得计算节点105在分布式计算系统102中共同实现多领导者选举。例如,多领导者选举过程的不同实例说明性地由计算节点105中的不同计算节点至少部分地并行执行,以便准许计算节点105在分布式计算系统102内实现多领导者选举功能时彼此协作。
在步骤200中,计算节点105中的给定的计算节点使用协调服务104来建立该计算节点的参与者标识符。
在步骤202中,计算节点与协调服务交互以获得参与者树和选举结果树的当前值,其示例分别在图3和图4中示出。
在步骤204中,计算节点利用所获得的值来维护其决策堆栈数据结构以与执行其多领导者选举算法的实例结合使用。
在步骤206中,计算节点使用其决策堆栈数据结构并根据多领导者选举算法来将一个或多个领导者指派给一个或多个处理任务。在必要时,计算节点还会重新平衡对处理任务的领导者指派。
在步骤208中,计算节点更新其决策堆栈数据结构以反映更新的领导者指派。
在步骤210中,计算节点与协调服务交互以更新选举结果树。
与步骤202至210并行地,计算节点使用说明性地至少部分经由协调服务的监视工具实现的监视环路,以检测一个或多个其他计算节点退出参与多领导者选举算法。
由分布式计算系统的计算节点中的每一者说明性地重复步骤200至210的至少部分以进行多次迭代。这种布置允许计算节点彼此协作来在分布式计算系统内实现多领导者选举功能。
仅为了说明的清楚和简单起见,图2过程的步骤按顺序次序示出,并且某些步骤可与其他步骤至少部分地重叠。在其他实施方案中,可使用附加或替代的步骤。
结合图2的流程图描述的特定处理操作和其他系统功能仅通过说明性示例的方式呈现,并且无论如何都不应解释为限制本公开的范围。替代实施方案可使用其他类型的处理操作来在分布式计算系统中实现多领导者选举。例如,如上文所指示,在其他实施方案中,过程步骤的排序可发生变化,或者某些步骤可彼此至少部分同时地执行而不是连续地执行。而且,可周期性地重复过程步骤中的一者或多者,或者可彼此并行地执行该过程的多个实例以便在分布式计算系统内的多个计算节点上实现多领导者选举。
诸如结合图2的流程图描述的功能可至少部分地以存储在存储器中并且由诸如计算机或服务器的处理装置的处理器执行的一个或多个软件程序的形式实现。如下文将描述,其中体现有一个或多个软件程序的可执行程序代码的存储器或其他存储装置是在本文中更一般地称为“处理器可读存储介质”的示例。
计算节点可被实现为本文中更一般地称为处理平台的一部分,该处理平台包括一个或多个处理装置,每个处理装置包括耦合到存储器的处理器。
在一些实施方案中,给定的这种处理装置可对应于一个或多个虚拟机或者其他类型的虚拟化基础设施,诸如Docker容器或Linux容器(LXC)。主机装置、存储控制器以及其他系统部件可至少部分地使用此类处理平台的处理装置来实现。例如,计算节点的相应的逻辑实例、数据结构或其他处理模块可在处理平台的处理装置中的相应的处理装置上运行的相应的容器内实现。
由协调服务104维护的上述参与者标识符树、选举结果树和监视树的示例现在将分别结合图3、图4和图5在下文进行描述。图4也包括由计算节点105中的给定的计算节点维护的上述决策堆栈数据结构的示例。
在这些示例中,非限制性地假定使用Apache ZooKeeper来实现协调服务104以使计算节点105之间的选举相关数据同步,但可使用其他类型的协调服务。如先前所指示,ZooKeeper是用于分布式应用程序的开源协调服务。ZooKeeper通过以类似于标准文件系统的方式组织的共享分层名称空间来允许分布式进程彼此协作,并且利用通常被称为“znode”的数据结构。用户可创建znode并且以类似于文件系统的方式经由分层树数据结构的根节点进行访问。每个znode还可具有可能由用户设置的一个或多个对应的值。znode说明性地表示在ZooKeeper分层树中创建的节点。因此,znode在本文中也被称为“节点”,但不要与分布式计算系统的计算节点混淆。
参与多领导者选举算法的实体在本文中一般被称为“参与者”。例如,计算节点105中的每一者说明性地是经由与协调服务104交互而在分布式计算系统102内执行的多领导者选举算法中的参与者。在其他实施方案中,可指定其他类型的参与者。例如,在其他实施方案中,给定的计算节点的特定线程或进程可为参与者。
如先前所指示,下文将描述的说明性实施方案利用ZooKeeper来使参与者之间的信息同步,并且利用由ZooKeeper提供的以下三个特征:
顺序性.当创建znode时,其可被设置为“顺序的”。ZooKeeper将对znode添加后缀i,其中i是整数。一旦创建了这种znode,顺序编号就将递增1。例如,如果一个参与者创建了名为P_的顺序节点,则ZooKeeper将创建节点P_0。如果另一个参与者创建了名为P_的另一个顺序节点,则ZooKeeper将创建节点P_1。
短暂性.参与者还可将znode创建为“短暂的”。如果参与者与ZooKeeper服务器之间的会话到期,那么ZooKeeper将自动地移除znode。这种会话到期事件可能例如由计算节点崩溃或由参与者选择退出而引起。
监视者.参与者可对znode设置监视功能。当所述znode上存在任何改变时,将调用该功能。可能的改变包括znode值更新或znode被删除。
如先前所提及,在一些实施方案中,协调服务104维护用于多领导者选举的各种类型的数据结构,所述数据结构说明性地包括参与者标识符树、选举结果树和监视树,其示例在相应的图3、图4和图5中示出。此类树也被称为子树,因为它们说明性地共享ZooKeeper分层树的共同根节点。
现在参考图3,数据结构300包括根节点301和在根节点301之下的参与者标识符树302。在该示例中,参与者标识符树表示为Tree_PID。当任何参与者启动时,它与协调服务104交互以在该树之下创建名为ID_的节点,该节点具有顺序设置和短暂设置两者。在图3的示例中,有三个参与者在Tree_PID中创建了这种节点,从而产生具有相应的顺序值ID_0、ID_1和ID_2的三个叶节点。这些是相应的参与者的标识符或PID。由于自动生成的顺序编号是唯一的,因此在多领导者选举过程中,每个参与者可读取这个编号并且将其用作自身的ID编号。
如图4所示,数据结构400包括根节点401和在根节点401之下的选举结果树402。在该示例中,选举结果树表示为Tree_Elect。尽管在图中被示出为单独的根节点,但根节点401说明性地与根节点301相同,使得图3的Tree_PID和图4的Tree_Elect两者都是同一个根节点的子树。Tree_Elect的叶节点说明性地存储相应的处理任务的领导者选举结果,其中znode名称表示特定处理任务并且znode值是当前被指派为该任务的领导者的参与者的ID编号。在图4的示例中,同样假定有三个参与者分别具有相应的参与者标识符ID_0、ID_1和ID_2,简称为0、1和2。每个参与者可经由协调服务104来执行Tree_Elect的查找以确定当前选举结果。在完成多领导者选举过程之后,该树也将被更新来反映最近的领导者选举决策。
在图4的示例中进一步假定在选举过程中有五个任务A、B、C、D和E需要从三个参与者0、1和2中选举领导者。该图示出了在完成多领导者选举过程之后的更新树。在该示例中,参与者0被选举为任务A和D的领导者,参与者1被选举为任务B和E的领导者,并且参与者2被选举为任务C的领导者。
图4中还示出了作为多领导者选举过程的部分由计算节点中的给定的计算节点使用的示例决策堆栈。在该示例中,决策堆栈在本文中也被称为S_elect。执行多领导者选举过程的参与者将使用决策堆栈S_elect来作出其选举决策。在多领导者选举过程期间,通过查找Tree_PID和Tree_Elect来填充和更新该决策堆栈。
说明性地使用以下规则来生成决策堆栈S_elect,但可使用附加或替代的规则。按参与者当前作为领导者被指派的任务数量对所述参与者进行分类。将具有最多任务的参与者朝向堆栈的底部分类。如果多个参与者各自具有相同数量的任务,那么进一步按其相应的ID编号对所述参与者进行分类,其中将较高的ID编号朝向堆栈的底部分类。堆栈还保留针对每个参与者的指派的任务的列表。因此,堆栈中的给定的条目包括参与者ID以及该参与者当前作为领导者被指派的处理任务(如果有的话)的列表。
当任何处理任务需要指派领导者时,对使用上文描述的树和决策堆栈的示例多领导者选举过程进行说明性地配置,以从堆栈S_elect选择顶部参与者作为候选者,因为它被指派的任务最少。如果按照以上规则,多个参与者都具备资格,那么具有最低ID编号的参与者胜出。而且,多领导者选举过程会重新平衡参与者之间的任务,直到任务均匀地分配在参与者之间为止。每个参与者被假定为在该参与者启动时执行多领导者选举过程,但另外地或替代地,可在其他条件下执行该过程。
在该示例中,多领导者选举过程包括以下步骤,但可使用附加或替代的步骤:
步骤1:在树Tree_PID中创建znode ID_,将其设置为顺序且短暂的。
步骤2:从自动地生成的znode名称ID_n检索编号,将该编号n保存为参与者的ID。
步骤3:基于Tree_Elect的信息而创建列表L1:
L1:尚未指派领导者的任务
步骤4:查找Tree_PID和Tree_Elect。通过使用树信息来创建堆栈S_elect。
步骤5:如果L1为空,则转到步骤6。否则:
对于L1中的task_i:
{
将S_elect中的顶部参与者指派为task_i的领导者
更新Tree_Elect
基于Tree_PID和Tree_Elect而重新创建S_elect
}
步骤6:重新平衡参与者之间的任务:
在(真)时:
{
t_diff=(底部参与者的任务数量)–(顶部参与者的任务数量)
如果(t_diff<=1):
完成选举过程
否则:
{
将第一任务从底部参与者移动到顶部参与者
更新Tree_Elect
基于Tree_PID和Tree_Elect而重新创建S_elect
}
}
同样,该特定的多领导者选举过程仅通过说明性示例的方式呈现,并且无论如何都不应解释为限制。
如先前所提及,一些实施方案利用监视环路来处理参与者离开集群的情形。
图5示出了数据结构500,该数据结构包括根节点501和在根节点501之下的监视树502。监视树也表示为Tree_Watch。如附图所示,该监视树仅具有单个节点。
该实施方案利用ZooKeeper的监视工具来创建监视环路,使得任何参与者的崩溃、故障、退出或其他离开事件都将被另一个参与者检测到。说明性地形成监视环路,使得每个参与者监视具有最接近的较低ID编号的另一个参与者,并且具有最低ID编号的参与者监视具有最高ID编号的参与者。
每次参与者启动时更新该环路。由给定的参与者执行的示例监视环路更新过程中的步骤如下所述,但可使用附加或替代的步骤:
步骤1:参与者通过检查在Tree_PID之下创建的znode来学习所有运行的参与者的ID编号。将i设为该参与者的ID编号。
步骤2:找到编号j,其中j是最大编号,使得j<i。
步骤3:如果存在j,那么对znode ID_j设置监视并且更新znode Tree_Watch。否则,该参与者是集群中的唯一运行的参与者,对Tree_Watch设置监视。
根据步骤3,显而易见的是,当新的参与者启动时,将对具有最低ID编号的参与者进行通知。在接收到该通知后,具有最低ID编号的参与者将执行以下步骤,但同样可使用附加或替代的步骤:
步骤1:获得其当前监视IDp和所有参与者中的最大IDq。
步骤2:如果存在p,那么停止监视p。
步骤3:对q设置监视。
由于在Tree_PID之下的每个znode被设置为短暂的,因此它将在参与者与服务器之间的ZooKeeper会话断开时自动地删除,这意味着参与者已经离开集群。
将p设为离开集群的参与者,其中q是p的监视者,那么q将在接收到通知后进行以下操作:
步骤1:更新Tree_Elect。对于领导者为p的任何任务,现在将其领导者标记为空。
步骤2:开始选举过程。
步骤3:重新形成监视环路。如果q是最低编号,那么对最高ID编号和Tree_Watch设置监视。否则,对参与者j设置监视,其中j是最大编号,使得j<q。
用于实现上文描述的多领导者选举功能的至少一些的说明性过程的详细示例现在将结合图6至图12的图示进行描述。
在该示例中,假定存在五个任务A、B、C、D和E,以及随时间按顺序加入集群的五个参与者0、1、2、3和4,以参与者0开始。下文的描述示出了每当新的参与者加入集群时如何更新多领导者选举结果,并且还示出了在参与者离开集群时如何更新多领导者选举结果。
图6示出了在参与者0加入集群并执行多领导者选举算法的迭代,从而导致参与者0被指派为所有任务的领导者(因为此时集群中没有其他参与者)之后的Tree_PID树和Tree_Elect树以及决策堆栈。
图7示出了在参与者1加入集群并执行多领导者选举算法的迭代,从而导致参与者1被指派为任务A和B的领导者并且参与者0仍被指派为任务C、D和E的领导者之后的更新的Tree_PID树和Tree_Elect树以及决策堆栈。因此,参与者1从参与者0接管任务,直到参与者1与0之间的任务数量差值等于1为止,这在参与者1接受任务A和B之后发生。
图8示出了在参与者2加入集群并执行多领导者选举算法的迭代,从而导致参与者2被指派为任务C的领导者,参与者0仍被指派为任务D和E的领导者并且参与者1仍被指派为任务A和B的领导者之后的更新的Tree_PID树和Tree_Elect树以及决策堆栈。在多领导者选举算法的这次迭代中,参与者2从参与者0接管任务C,并且此时,决策堆栈中的顶部参与者与底部参与者之间的任务数量差值等于1,并且因此迭代结束。
图9示出了在参与者3加入集群并执行多领导者选举算法的迭代,从而导致参与者3被指派为任务A的领导者,参与者0仍被指派为任务D和E的领导者,参与者1仍被指派为任务B的领导者并且参与者2仍被指派为任务C的领导者之后的更新的Tree_PID树和Tree_Elect树以及决策堆栈。在多领导者选举算法的这次迭代中,参与者3从参与者1接管任务A,并且此时,决策堆栈中的顶部参与者与底部参与者之间的任务数量差值等于1,并且因此迭代结束。
图10示出了在参与者4加入集群并执行多领导者选举算法的迭代,从而导致参与者4被指派为任务D的领导者,参与者0仍被指派为任务E的领导者,参与者1仍被指派为任务B的领导者,参与者2仍被指派为任务C的领导者并且参与者3仍被指派为任务A的领导者之后的更新的Tree_PID树和Tree_Elect树以及决策堆栈。在多领导者选举算法的这次迭代中,参与者4从参与者0接管任务D,并且此时,决策堆栈中的顶部参与者与底部参与者之间的任务数量差值等于0,并且因此迭代结束。
假设此时在该示例中,参与者3崩溃。由于参与者4在监视环路中监视参与者3,因此它将得到通知并且开始多领导者选举算法的迭代。
图11示出了在参与者3崩溃、故障或另外不再能够参与的情形,响应于此,将其对应的znode从Tree_PID移除,并且在Tree_Elect和决策堆栈中不再有任何领导者被指派给任务A。由参与者4利用监视环路检测到这个情形。
由于任务A现在没有指派的领导者,因此由参与者4发起的多领导者选举算法的迭代将首先确定剩余参与者中的哪一者将成为任务A的领导者。基于先前描述的说明性规则,决策堆栈中的顶部参与者是最有资格接管新任务的参与者,其中层级转为较低参与者ID,并且因此参与者0将胜出并被指派为任务A的领导者。
图12示出了在参与者4执行多领导者选举算法的迭代,从而导致参与者0被指派为任务A的领导者且仍被指派为任务E的领导者之后的更新的Tree_PID树和Tree_Elect树以及决策堆栈。参与者1仍被指派为任务B的领导者,参与者2仍被指派为任务C的领导者,并且参与者4仍被指派为任务D的领导者。在多领导者选举算法的这次迭代中,参与者0从故障的参与者3接管任务A,并且此时,决策堆栈中的顶部参与者与底部参与者之间的任务数量差值等于1,并且因此迭代结束。而且,根据更新的监视环路,参与者4现在将开始监视参与者2。
如先前所指示,本文所公开的类型的多领导者选举说明性地由在分布式计算系统102的计算节点105上执行的一个或多个分布式应用程序利用。
在一些实施方案中,确定何时以及如何利用选举结果取决于应用程序。例如,如果分布式应用程序在运行一组任务,其中一个或多个此类任务各自作为后台作业周期性地运行,则计算节点可如下控制给定的此类任务的执行:
在(真)时:
{
执行任务i动作
睡眠(n_sec)
}
为了利用多领导者选举过程的结果,应用程序可以如下方式修改上文描述的执行控制:
在(真)时:
{
如果(isLeaderofTask(i)==真):
{
执行任务i动作
}
睡眠(n_sec)
}
函数isLeaderofTask(i)可通过计算节点使用其参与者ID检查Tree_Elect以确定其是否被指派为任务i的领导者来实现。
应当了解,上文描述且由图6至图12的图示所示的特定示例算法仅通过举例的方式呈现,并且无论如何都不应解释为限制。可使用附加或替代的步骤,并且在其他实施方案中,步骤的排序可发生变化,可能其中一个或多个步骤中的每一者与一个或多个其他步骤至少部分地并行执行。
本文所公开的这些和其他实施方案提供了优于常规方法的显著优势。
例如,说明性实施方案提供了用于分布式计算系统中的多领导者选举的技术。在一些实施方案中,此类技术将集群的多个节点配置为彼此协作来以有助于平衡节点上的处理任务的方式为相应的处理任务选举多个领导者,从而带来分布式计算系统内的整体性能的提高。
在一些实施方案中,每个参与者经由其多领导者选举逻辑的实例来实现相同的多领导者选举代码,从而大大简化用于在分布式计算系统中实现多领导者选举功能的部署工作。此外,分布式计算系统可容易地按比例增加和减少至给定的部署中的更多或更少的计算节点,而不会给计算节点带来任何显著的附加工作或影响。
在说明性实施方案中,提供了不管参与者和任务的数量如何都不需要任何修改的多领导者选举算法。在一些实施方案中,该算法有利地被配置为始终确保任务被均匀地分配在可用的参与者之间。
通过利用ZooKeeper或其他协调服务来提供参与者标识符树、选举结果树、监视树和/或用于多领导者选举的其他数据结构,说明性实施方案有利于在分布式计算系统的计算节点之间进行关于领导者选举的交互,同时提供对所需信息的方便、可靠且高性能的访问。
说明性实施方案有利地允许更好地利用每个节点的可用处理资源并且由此提高整体系统性能。
应当理解,上文和本文其他地方描述的特定优点与特定说明性实施方案相关联,并且不需要存在于其他实施方案中。而且,如附图所示且如上文所描述的特定类型的信息处理系统特征和功能仅是示例性的,并且在其他实施方案中可使用许多其他布置。
用于实现具有多领导者选举功能的主机装置和分布式计算系统的处理平台的说明性实施方案现在将参考图13和图14更详细地描述。尽管在系统100的背景下描述,但在其他实施方案中,这些平台也可用于实现其他信息处理系统的至少部分。
图13示出了包括云基础设施1300的示例处理平台。云基础设施1300包括可用于实现信息处理系统100的至少一部分的物理和虚拟处理资源的组合。云基础设施1300包括使用虚拟化基础设施1304实现的多个虚拟机(VM)和/或容器组1302-1、1302-2...1302-L。虚拟化基础设施1304在物理基础设施1305上运行,并且说明性地包括一个或多个管理程序和/或操作系统级虚拟化基础设施。操作系统级虚拟化基础设施说明性地包括Linux操作系统或其他类型的操作系统的内核控制组。
云基础设施1300还包括在虚拟化基础设施1304的控制下在VM/容器组1302-1、1302-2、…1302-L中的相应的VM/容器组上运行的多组应用程序1310-1、1310-2、…1310-L。VM/容器组1302可包括相应的VM、相应组的一个或多个容器,或在VM中运行的相应组的一个或多个容器。
在图13实施方案的一些实现方式中,VM/容器组1302包括使用包括至少一个管理程序的虚拟化基础设施1304实现的相应的VM。此类实现方式可在上文描述的类型的分布式计算系统中使用在VM中的给定的VM上运行的一个或多个进程来提供多领导者选举功能。例如,VM中的每一者可实现逻辑实例、数据结构和/或用于在系统100中实现与多领导者选举相关联的功能的其他部件。
管理程序平台可用于在虚拟化基础设施1304内实现管理程序。这种管理程序平台可包括相关联的虚拟基础设施管理系统。底层物理机可包括一个或多个分布式处理平台,所述分布式处理平台包括一个或多个存储系统。
在图13实施方案的其他实现方式中,VM/容器组1302包括使用虚拟化基础设施1304实现的相应的容器,所述虚拟化基础设施提供操作系统级虚拟化功能,诸如支持在裸金属主机上运行的Docker容器,或在VM上运行的Docker容器。容器说明性地使用操作系统的相应的内核控制组来实现。此类实现方式也可在上文描述的类型的分布式计算系统中提供多领导者选举功能。例如,支持一个或多个容器组中的多个容器的容器主机装置可实现逻辑实例、数据结构和/或用于在系统100中实现多领导者选举功能的其他部件。
从上文显而易见的是,处理装置中的一者或多者或系统100的其他部件各自可在计算机、服务器、存储装置或其他处理平台元件上运行。给定的此类元件可被视为在本文中更一般地称为“处理装置”的示例。图13所示的云基础设施1300可表示一个处理平台的至少一部分。此类处理平台的另一个示例是图14所示的处理平台1400。
在该实施方案中,处理平台1400包括系统100的一部分,并且包括表示为1402-1、1402-2、1402-3、…1402-K的多个处理装置,该多个处理装置通过网络1404彼此通信。
网络1404可包括任何类型的网络,例如包括全球计算机网络(诸如互联网)、WAN、LAN、卫星网络、电话或电缆网络、蜂窝网络、无线网络(诸如WiFi或WiMAX网络),或这些和其他类型网络的各种部分或组合。
处理平台1400中的处理装置1402-1包括耦合到存储器1412的处理器1410。
处理器1410可包括微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)或其他类型的处理电路,以及此类电路元件的部分或组合。
存储器1412可包括呈任意组合的随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器或其他类型的存储器。存储器1412和本文所公开的其他存储器应被视为更一般地称为存储一个或多个软件程序的可执行程序代码的“处理器可读存储介质”的说明性示例。
包括此类处理器可读存储介质的制品被认为是说明性实施方案。给定的此类制品可包括例如存储阵列、存储磁盘或包含RAM、ROM、快闪存储器或其他电子存储器的集成电路,或各种各样其他类型的计算机程序产品中的任何一种。如本文所用的术语“制品”应被理解为排除瞬时的传播信号。可使用包括处理器可读存储介质的许多其他类型的计算机程序产品。
处理装置1402-1中还包括网络接口电路1414,该网络接口电路用于将处理装置与网络1404和其他系统部件介接,并且可包括常规收发器。
假定处理平台1400的其他处理装置1402以与附图中针对处理装置1402-1所示的方式类似的方式进行配置。
同样,仅通过示例的方式呈现附图中所示的特定处理平台1400,并且系统100可包括附加或替代的处理平台,以及呈任意组合的许多不同的处理平台,其中每个这样的平台包括一个或多个计算机、服务器、存储装置或其他处理装置。
例如,用于实现说明性实施方案的其他处理平台可包括融合基础设施的各种布置。
因此,应当理解,在其他实施方案中,可使用附加或替代元件的不同布置。这些元件的至少一个子集可在共同的处理平台上共同地实现,或者每个这样的元件可在单独的处理平台上实现。
如先前所指示,如本文所公开的信息处理系统的部件可至少部分地以存储在存储器中且由处理装置的处理器执行的一个或多个软件程序的形式实现。例如,如本文所公开的由存储系统的一个或多个部件提供的多领导者选举功能的至少部分说明性地以在一个或多个处理装置上运行的软件的形式实现。
应当再次强调,仅出于说明目的而呈现上文描述的实施方案。可使用许多变化和其他替代实施方案。例如,所公开的技术适用于各种各样其他类型的信息处理系统、分布式计算系统、协调服务、计算节点、多领导者选举逻辑实例、数据结构和其他部件。而且,在其他实施方案中,附图中说明性地示出的系统和装置元件的特定配置以及相关联的处理操作可发生变化。此外,上文在描述说明性实施方案的过程中做出的各种假定也应被视为示例性的,而不是对本公开的要求或限制。所附权利要求的范围内的许多其他替代实施方案对于本领域技术人员将是显而易见的。
Claims (20)
1.一种设备,所述设备包括:
至少一个处理装置,所述至少一个处理装置包括耦合到存储器的处理器;
所述至少一个处理装置被配置为:
与用于一个或多个分布式应用程序的协调服务一起建立在分布式计算系统中实现的多领导者选举算法中的给定的参与者的参与者标识符,所述分布式计算系统包括多个计算节点,所述计算节点对应于具有相应的参与者标识符的参与者;以及
在执行所述多领导者选举算法的迭代时与所述协调服务交互,以确定所述参与者中的相应的参与者作为所述分布式计算系统的相应的处理任务的领导者的当前指派。
2.如权利要求1所述的设备,其中所述至少一个处理装置包括所述分布式计算系统的所述计算节点中的特定计算节点的至少一部分。
3.如权利要求1所述的设备,其中所述协调服务包括在所述分布式计算系统外部的一个或多个服务器。
4.如权利要求1所述的设备,其中所述协调服务维护一个或多个数据结构以用于所述分布式计算系统中实现的所述多领导者选举算法。
5.如权利要求4所述的设备,其中所述一个或多个数据结构至少包括参与者标识符树和选举结果树,所述参与者标识符树包括用于所述参与者标识符中的相应的参与者标识符的多个叶节点,并且所述选举结果树包括指示当前被选举为所述处理任务中的相应的处理任务的领导者的所述参与者中的相应参与者的多个叶节点。
6.如权利要求1所述的设备,其中与用于一个或多个分布式应用程序的协调服务一起建立多领导者选举算法中的给定的参与者的参与者标识符包括:
请求将所述给定的参与者的参与者标识符树节点创建为顺序且短暂的节点;以及
响应于所述请求而接收所述给定的参与者的所述参与者标识符。
7.如权利要求1所述的设备,其中在执行所述多领导者选举算法的迭代时与所述协调服务交互包括:
从所述协调服务获得参与者标识符树节点和选举结果树节点的值;
利用所述获得的值来维护堆栈数据结构,其中至少部分地基于参与者作为领导者被指派的处理任务的数量而将所述参与者分类为所述堆栈数据结构的条目;
响应于所述处理任务中的至少一者当前没有指派的领导者,至少部分地基于特定参与者的条目在所述堆栈数据结构中的位置而将所述参与者指派给先前未指派的处理任务中的给定的处理任务,通过所述协调服务来更新所述堆栈数据结构以及所述选举结果树节点的一个或多个对应的值,并且重复所述指派和所述更新,直到领导者被指派给所有的所述处理任务为止。
8.如权利要求7所述的设备,其中所述堆栈数据结构的所述条目的至少一个子集中的每一者包括参与者标识符以及指示对应的参与者作为领导者被指派的所述处理任务中的一者或多者的信息。
9.如权利要求7所述的设备,其中所述堆栈数据结构的所述条目按所述对应的参与者作为领导者被指派的处理任务的数量增加的次序进行组织,其中所述参与者中的具有最高数量的指派的处理任务的第一参与者在所述堆栈数据结构中具有最低条目,并且所述参与者中的具有最低数量的指派的处理任务的第二参与者在所述堆栈数据结构中具有最高条目,其中具有相同数量的指派的处理任务的参与者的条目定位利用其相应的参与者标识符来解决。
10.如权利要求7所述的设备,其中至少部分地基于特定参与者的条目在所述堆栈数据结构中的位置而将所述参与者指派给所述先前未指派的处理任务中的给定的处理任务包括将在所述堆栈数据结构中具有所述最高条目的所述参与者指派为所述给定的处理任务的领导者。
11.如权利要求7所述的设备,其中所述至少一个处理装置还被配置为响应于检测到指派给所述参与者中的具有最高数量的指派的处理任务的第一参与者和所述参与者中的具有最低数量的指派的处理任务的第二参与者的处理任务的相应的数量之间的至少阈值差值而重新平衡参与者之间的任务指派。
12.如权利要求11所述的设备,其中所述重新平衡参与者之间的任务指派包括将所述处理任务中的至少一者从所述第一参与者重新指派给所述第二参与者,并且通过所述协调服务来更新所述堆栈数据结构以及所述选举结果树节点的一个或多个对应的值。
13.如权利要求1所述的设备,其中在执行所述多领导者选举算法的迭代时与所述协调服务交互包括:
根据所述协调服务的监视工具在所述参与者之间建立监视环路的至少一部分;以及
利用所述监视环路来检测所述参与者中的一者或多者退出参与所述多领导者选举算法;
其中所述监视环路至少部分地基于参与者标识符而进行配置,其中每个参与者根据其相应的参与者标识符来监控所述参与者中的在所述监视环路中与其相邻的另一个参与者。
14.如权利要求1所述的设备,其中所述至少一个处理装置还被配置为针对所述分布式应用程序中的至少一者:
经由所述协调服务来确定给定的参与者当前是否被指派为所述处理任务中的特定处理任务的领导者;以及
响应于肯定的确定,使所述给定的参与者执行所述特定处理任务。
15.一种计算机程序产品,所述计算机程序产品包括其中存储有一个或多个软件程序的程序代码的非暂时性处理器可读存储介质,其中所述程序代码在被包括耦合到存储器的处理器的至少一个处理装置执行时致使所述至少一个处理装置:
与用于一个或多个分布式应用程序的协调服务一起建立在分布式计算系统中实现的多领导者选举算法中的给定的参与者的参与者标识符,所述分布式计算系统包括多个计算节点,所述计算节点对应于具有相应的参与者标识符的参与者;以及
在执行所述多领导者选举算法的迭代时与所述协调服务交互,以确定所述参与者中的相应的参与者作为所述分布式计算系统的相应的处理任务的领导者的当前指派。
16.如权利要求15所述的计算机程序产品,其中与用于一个或多个分布式应用程序的协调服务一起建立多领导者选举算法中的给定的参与者的参与者标识符包括:
请求将所述给定的参与者的参与者标识符树节点创建为顺序且短暂的节点;以及
响应于所述请求而接收所述给定的参与者的所述参与者标识符。
17.如权利要求15所述的计算机程序产品,其中在执行所述多领导者选举算法的迭代时与所述协调服务交互包括:
从所述协调服务获得参与者标识符树节点和选举结果树节点的值;
利用所述获得的值来维护堆栈数据结构,其中至少部分地基于参与者作为领导者被指派的处理任务的数量而将所述参与者分类为所述堆栈数据结构的条目;
响应于所述处理任务中的至少一者当前没有指派的领导者,至少部分地基于特定参与者的条目在所述堆栈数据结构中的位置而将所述参与者指派给先前未指派的处理任务中的给定的处理任务,通过所述协调服务来更新所述堆栈数据结构以及所述选举结果树节点的一个或多个对应的值,并且重复所述指派和所述更新,直到领导者被指派给所有的所述处理任务为止。
18.一种方法,所述方法包括:
与用于一个或多个分布式应用程序的协调服务一起建立在分布式计算系统中实现的多领导者选举算法中的给定的参与者的参与者标识符,所述分布式计算系统包括多个计算节点,所述计算节点对应于具有相应的参与者标识符的参与者;以及
在执行所述多领导者选举算法的迭代时与所述协调服务交互,以确定所述参与者中的相应的参与者作为所述分布式计算系统的相应的处理任务的领导者的当前指派。
19.如权利要求18所述的方法,其中与用于一个或多个分布式应用程序的协调服务一起建立多领导者选举算法中的给定的参与者的参与者标识符包括:
请求将所述给定的参与者的参与者标识符树节点创建为顺序且短暂的节点;以及
响应于所述请求而接收所述给定的参与者的所述参与者标识符。
20.如权利要求18所述的方法,其中在执行所述多领导者选举算法的迭代时与所述协调服务交互包括:
从所述协调服务获得参与者标识符树节点和选举结果树节点的值;
利用所述获得的值来维护堆栈数据结构,其中至少部分地基于参与者作为领导者被指派的处理任务的数量而将所述参与者分类为所述堆栈数据结构的条目;
响应于所述处理任务中的至少一者当前没有指派的领导者,至少部分地基于特定参与者的条目在所述堆栈数据结构中的位置而将所述参与者指派给先前未指派的处理任务中的给定的处理任务,通过所述协调服务来更新所述堆栈数据结构以及所述选举结果树节点的一个或多个对应的值,并且重复所述指派和所述更新,直到领导者被指派给所有的所述处理任务为止。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111558591.0A CN116266129A (zh) | 2021-12-17 | 2021-12-17 | 分布式计算系统中的多领导者选举 |
US17/562,094 US12061932B2 (en) | 2021-12-17 | 2021-12-27 | Multi-leader election in a distributed computing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111558591.0A CN116266129A (zh) | 2021-12-17 | 2021-12-17 | 分布式计算系统中的多领导者选举 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116266129A true CN116266129A (zh) | 2023-06-20 |
Family
ID=86744039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111558591.0A Pending CN116266129A (zh) | 2021-12-17 | 2021-12-17 | 分布式计算系统中的多领导者选举 |
Country Status (2)
Country | Link |
---|---|
US (1) | US12061932B2 (zh) |
CN (1) | CN116266129A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12131176B2 (en) * | 2022-01-19 | 2024-10-29 | VMware LLC | Cluster leader selection via ping tasks of service instances |
CN116980346B (zh) * | 2023-09-22 | 2023-11-28 | 新华三技术有限公司 | 基于云平台的容器管理方法及装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63163667A (ja) * | 1986-12-26 | 1988-07-07 | Toshiba Corp | 割当て決定支援方式 |
EP0403229A1 (en) * | 1989-06-13 | 1990-12-19 | Digital Equipment Corporation | Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors |
US5408663A (en) * | 1993-11-05 | 1995-04-18 | Adrem Technologies, Inc. | Resource allocation methods |
JP2000040099A (ja) * | 1998-07-23 | 2000-02-08 | Toshiba Corp | スケジュール作成装置及び方法、ジョブの選択方法並びにスケジュール作成用ソフトウェアを記録した記録媒体 |
JP3589658B2 (ja) * | 2001-09-28 | 2004-11-17 | 松下電器産業株式会社 | 最適化装置、装着装置及び電子部品装着システム |
JP4288978B2 (ja) * | 2003-03-27 | 2009-07-01 | 株式会社日立製作所 | データ先読み方法 |
CA2596496A1 (en) * | 2005-02-01 | 2006-08-10 | Agencourt Bioscience Corp. | Reagents, methods, and libraries for bead-based sequencing |
US20060271935A1 (en) * | 2005-05-31 | 2006-11-30 | Microsoft Corporation | Assignment of clients to tasks in a distributed system |
US7840456B2 (en) * | 2007-05-30 | 2010-11-23 | Intuit Inc. | System and method for categorizing credit card transaction data |
KR101517021B1 (ko) * | 2008-11-10 | 2015-04-30 | 삼성전자주식회사 | 광대역 무선통신 시스템에서 프리앰블 의사 잡음 코드의 중복을 피하기 위한 아이디 셀 할당 장치 및 방법 |
US8789065B2 (en) * | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US9870269B1 (en) * | 2013-09-05 | 2018-01-16 | Amazon Technologies, Inc. | Job allocation in a clustered environment |
JP6515708B2 (ja) * | 2015-07-06 | 2019-05-22 | 富士通株式会社 | 情報処理装置、並列計算機システム、ジョブスケジュール設定プログラムおよびジョブスケジュール設定方法 |
ITUA20161426A1 (it) * | 2016-03-07 | 2017-09-07 | Ibm | Dispaccio di lavori per esecuzione in parallelo da processori multipli |
US11693706B2 (en) * | 2018-11-21 | 2023-07-04 | Samsung Electronics Co., Ltd. | System and method for dynamic scheduling of distributed deep learning training jobs |
EP4002167B1 (en) * | 2020-09-28 | 2024-07-24 | Rakuten Group, Inc. | Authentication system, authentication method, and program |
JP7414931B1 (ja) * | 2022-10-28 | 2024-01-16 | 株式会社東芝 | 情報処理装置、情報処理方法、プログラムおよび情報処理システム |
-
2021
- 2021-12-17 CN CN202111558591.0A patent/CN116266129A/zh active Pending
- 2021-12-27 US US17/562,094 patent/US12061932B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US12061932B2 (en) | 2024-08-13 |
US20230195522A1 (en) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230376347A1 (en) | Task allocation method, apparatus, storage medium, and electronic device | |
US10698741B2 (en) | Resource allocation method for VNF and apparatus | |
US9184982B2 (en) | Balancing the allocation of virtual machines in cloud systems | |
CN110221920B (zh) | 部署方法、装置、存储介质及系统 | |
CN110868435B (zh) | 一种裸金属服务器调度方法、装置及存储介质 | |
US20180321981A1 (en) | System and method for self organizing data center | |
EP4068725B1 (en) | Topology-based load balancing for task allocation | |
Mishra et al. | Time efficient dynamic threshold-based load balancing technique for Cloud Computing | |
CN116266129A (zh) | 分布式计算系统中的多领导者选举 | |
US11093288B2 (en) | Systems and methods for cluster resource balancing in a hyper-converged infrastructure | |
EP3442201B1 (en) | Cloud platform construction method and cloud platform | |
Singh et al. | Survey on various load balancing techniques in cloud computing | |
CN112988344A (zh) | 分布式批量任务调度方法、装置、设备及存储介质 | |
CN111666158A (zh) | 一种基于Kubernetes的容器调度方法、装置、存储介质及电子设备 | |
US20230037293A1 (en) | Systems and methods of hybrid centralized distributive scheduling on shared physical hosts | |
US20160065680A1 (en) | Multi-node distributed network access server designed for large scalability | |
EP4145801B1 (en) | Distributed data grid routing for clusters managed using container orchestration services | |
CN115658311A (zh) | 一种资源的调度方法、装置、设备和介质 | |
CN111522664A (zh) | 基于分布式服务的服务资源管控方法及装置 | |
CN112822062A (zh) | 一种用于桌面云服务平台的管理方法 | |
Di Stefano et al. | Improving the allocation of communication-intensive applications in clouds using time-related information | |
US10310762B1 (en) | Lease-based leader designation for multiple processes accessing storage resources of a storage system | |
CN112261132A (zh) | 数据中心机群中的处理分配 | |
US20240272947A1 (en) | Request processing techniques for container-based architectures | |
Rodrigues et al. | Improving virtual machine consolidation for heterogeneous cloud computing datacenters |
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 |