CN114096950A - 提升任务-机器紧密性的分布式系统 - Google Patents
提升任务-机器紧密性的分布式系统 Download PDFInfo
- Publication number
- CN114096950A CN114096950A CN202080048663.4A CN202080048663A CN114096950A CN 114096950 A CN114096950 A CN 114096950A CN 202080048663 A CN202080048663 A CN 202080048663A CN 114096950 A CN114096950 A CN 114096950A
- Authority
- CN
- China
- Prior art keywords
- bucket
- computing device
- buckets
- data
- manager
- 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/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
- G06F9/5033—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 considering data affinity
-
- 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
- G06F9/505—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 considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本文描述了一种用于在分布式系统内分配任务的技术。该分布式系统包括多个计算设备。每个计算设备继而提供桶管理器和至少一个应用实例。桶管理器通过由一组应用专用初始化参数管理的方式,以桶为单位来向计算设备分配工作。桶管理器还与单独的存储和通知(S&N)系统协作来执行它们的分配功能。S&N系统将数据节点存储在分层数据结构中,该分层数据结构反映分布式系统的分配相关状态。S&N系统还在数据节点改变时通知桶管理器。根据一个规定,桶管理器包括逻辑电路,该逻辑电路降低计算设备加入和离开分布式系统时的昂贵的上下文改变。
Description
背景技术
分布式系统采用多个计算设备来处理数据。这些系统可以使用不同的策略来将任务分配给计算设备。在传统的主从模型中,分布式系统使用一个或多个专用主计算设备来将任务分配给从计算设备。在去中心化方法中,分布式系统不使用专用主计算设备来执行任务分配。例如,分布式系统可以使用一致哈希和gossip协议的组合来将任务分配给机器。然而,这些策略具有各种低效率。
发明内容
本文描述了一种用于在分布式系统内分配任务的技术。该分布式系统包括多个计算设备。每个计算设备又提供桶管理器和至少一个应用实例。桶管理器按照由一组应用专用初始化参数管理的方式,以桶为单位向计算设备分配工作。桶管理器还与单独的存储和通知(S&N)系统协作来执行它们的分配功能。S&N系统将数据节点存储在分层数据结构中,该分层数据结构反映分布式系统的分配相关状态。S&N系统还在数据节点改变时通知桶管理器。
更具体地,桶管理器可以以领导者角色和跟随者角色操作。当以领导者模式操作时,桶管理器执行以下操作:与S&N系统交互以确定分布式系统中是否发生了成员资格的改变;确保任何检测到的改变是稳定的;在确认该改变稳定之后,更新对分布式系统中的计算设备的桶的分配,使得没有两个计算设备被分配相同的桶;与S&N系统交互以记录桶的分配。每个桶对应于要由分配给它的计算设备执行的工作的配额。
当以跟随者角色操作时,计算设备的桶管理器执行以下操作:与S&N系统交互以确定是否存在分配给计算设备的桶的改变;向由所述计算设备提供的应用实例通知桶的任何检测到的改变;以及与S&N系统交互以要求已经被新分配的任何桶的所有权,和/或放弃对已经被新移除的任何桶的所有权。当应用实例接收到新桶已被分配给它的通知时,它加载执行与该桶相关联的任务所需的所有资源。当应用实例接收到已有桶已被移除的通知时,它移除这些资源。
在一个实现中,工作路由组件通过如下方式来将任务路由到该特定桶:对与任务相关联的数据进行哈希,然后将该哈希映射到特定桶ID。工作路由组件然后向拥有与特定桶ID相关联的桶的计算设备发送任务请求。更一般地,每个桶处理具有映射到该桶的哈希的所有任务。
根据一个技术优点,桶管理器对应于通用资源,不同的应用可以配置该通用资源,从而经由相应的初始化参数集将桶分配给计算设备。通用桶管理器的使用减少了应用开发者的负担,否则应用开发者需要将定制分配逻辑结合到应用中。
根据另一技术优点,桶管理器可使用超时时段和其它规定来确保计算设备在将任务分配到计算设备之前是稳定的。这种行为促进了任务对机器的紧密性或“粘性”。该规定是有用的,因为它减少了加载应用实例执行任务(对于新加入的计算设备)所需的资源以及移除这些资源(对于新脱离的计算设备)所需的工作量(以及与其相关联的时间)。
根据另一技术优点,桶管理器可以执行其分配功能而无需分布式系统中的计算设备之间的交互。替代设备到设备的交互,分布式系统通过使用S&N系统来实现该目标,从而协调其分配操作。该规定减少了任何计算设备由于其桶管理器所执行的工作而变得过载的机会。
以上概括的技术可以在各种类型的系统、设备、组件、方法、计算机可读存储介质、数据结构、图形用户界面呈现、制品等中显现。
提供本发明内容以便以简化的形式介绍一些概念;这些概念将在下面的详细描述中进一步描述。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
图1示出了由分布式系统提供的逻辑组件的说明性组织。
图2示出了由存储和通知(storage and notification,S&N)系统提供的数据节点的说明性分层组织。S&N系统又对应于图1的逻辑组件之一。
图3示出了用于分配领导者计算设备的技术。该技术利用了由图2的S&N系统提供的信息。
图4示出了利用图1的逻辑组件的一个说明性分布式系统。
图5至图7示出了用于将任务路由到图4的分布式系统中的桶的三个说明性工作路由组件。
图8示出了使用图1的逻辑组件实现上传服务的系统。
图9示出了当计算设备启动时由桶管理器执行的操作。
图10至图12示出了桶管理器在担当领导者角色时执行的操作。
图13和图14示出了桶管理器在担当跟随者角色时执行的操作。
图15和图16示出了在接收到新桶的通知时(参照图15)和在接收到移除已有桶的通知时(参照图16)由应用实例执行的操作。
图17和18提供了桶管理器在其领导者和跟随者角色中执行的操作的概要。
图19示出了可用于实现前述附图中所示的特征的任何方面的说明性类型的计算设备。
在整个公开内容和附图中使用相同的附图标记来指代相同的部件和特征。系列100数字是指最初在图1中发现的特征,系列200数字是指最初在图2中发现的特征,系列300数字是指最初在图3中发现的特征,依此类推。
具体实施方式
将如下组织本公开。部分A描述了使用桶管理器(bucket manager)来将工作分配给计算设备的分布式系统。部分B阐述了解释部分A的分布式系统的操作的示例性方法。部分C描述了可用于实现部分A和B中描述的任何方面特征的说明性计算设备。
作为预备问题,术语“硬件逻辑电路”包括执行存储在存储器中的机器可读指令的一个或多个硬件处理器(例如,CPU、GPU等),和/或一个或多个其它硬件逻辑单元(例如,FPGA),其使用固定和/或可编程逻辑门的任务专用集合执行操作。部分C提供关于硬件逻辑电路的一个实现的附加信息。在一些上下文中,术语“组件”、“工具”和“引擎”中的每一个指的是执行特定功能的硬件逻辑电路的一部分。
在一种情况下,图中所示的将各个部件分离成不同的单元可以反映在实际实现中使用相应的不同的物理和有形部件。可替换地或者另外,在附图中示出的任何单个部件可以由多个实际的物理部件实现。可替代地或另外地,图中任何两个或更多个单独部件的描绘可以反映由单个实际物理部件执行的不同功能。
其它附图以流程图形式描述了概念。在这种形式中,某些操作被描述为构成以特定顺序执行的不同块。这样的实现是说明性的而非限制性的。在此描述的某些块可以被分组在一起并且在单个操作中执行,某些块可以被分成多个组成块,并且某些块可以以与在此示出的顺序不同的顺序执行(包括并行地执行这些块的方式)。在一种实现方式中,流程图中示出的与处理相关的功能有关的框可以由部分C中描述的硬件逻辑电路来实现,该硬件逻辑电路又可以由一个或多个硬件处理器和/或包括逻辑门的任务专用集合的其他逻辑单元来实现。
至于术语,短语“配置为”包括用于执行所标识的操作的各种物理和有形机制。这些机制可以被配置为使用部分C的硬件逻辑电路来执行操作。术语“逻辑”同样包括用于执行任务的各种物理和有形机制。例如,流程图中所示的每个处理相关操作对应于用于执行该操作的逻辑组件。逻辑组件可以使用部分C的硬件逻辑电路来执行其操作。当逻辑组件由计算设备实现时,逻辑组件以所实现的任何方式表示作为计算系统的物理部分的电气元件。
本文描述的任何存储资源或存储资源的任何组合可被视为计算机可读介质。在许多情况下,计算机可读介质表示某种形式的物理和有形实体。术语计算机可读介质还包括例如经由物理导管和/或空气或其它无线介质等发送或接收的传播信号。然而,特定术语“计算机可读存储介质”明确地排除了传播信号本身,而包括所有其它形式的计算机可读介质。
以下说明可以将一个或多个特征标识为“可选”。这种类型的陈述不应被解释为对可被认为是可选的特征的穷举指示;即,其他特征可以被认为是可选的,尽管在文本中没有明确标识。此外,对单个实体的任何描述并不旨在排除使用多个这样的实体;类似地,对多个实体的描述并不旨在排除使用单个实体。此外,虽然本说明书可以将某些特征解释为执行所标识的功能或实现所标识的机制的替代方式,但是这些特征也可以以任何组合方式组合在一起。最后,术语“示例性”或“说明性”是指潜在的许多实现中的一个实现。
A.说明性分布式系统
图1示出了包括桶管理器104、应用106和S&N系统108的逻辑组件(例如,软件栈)的分层结构102。如将结合图4更全面地描述的,分布式系统的每个计算设备实现桶管理器104的实例和应用106的实例。一个或多个单独的计算设备可以实现S&N系统108。
桶管理器104将桶分配给分布式系统中的计算设备。桶对由计算设备(向该计算设备分配桶)处理的一组任务进行划分。例如,桶可以对应于哈希空间的片段。包括特定桶的计算设备将处理具有哈希空间中的映射到桶的关联部分的哈希的所有任务。
应用106以以下方式使用所分配的桶。工作路由组件(图1中未示出)首先对与任务相关联的数据进行哈希处理以产生哈希。工作路由组件然后将哈希映射到桶ID。桶ID又对应于特定桶。工作路由组件将任务请求路由到当前拥有特定桶的计算设备。计算设备然后使用其应用106的本地实例化来处理该任务。
更具体地,考虑其中任务涉及处理与网站相关联的数据的仅示例性情况。工作路由组件可生成网站的统一资源定位符(URL)的哈希,然后例如通过将哈希右移指定数目的位置来提取哈希的n个最高有效位,以产生桶ID。该桶ID又标识特定桶。工作路由组件然后将与网站相关联的任务请求路由到当前拥有所标识的桶的计算设备。
桶管理器104有时可以以领导者角色操作。在该角色中,桶管理器104使用领导者角色组件110来管理桶在分布式系统中的计算设备之间的分配和移除。在任何给定时间,分布式系统仅分配一个以领导者角色操作的桶管理器。
每个桶管理器还以跟随者模式操作。在此角色中,桶管理器104使用跟随者角色组件112来接收并作用于由领导者产生的分配指令。更具体地,每个桶管理器也以跟随者角色操作,即使在该桶管理器也充当领导者的那些时间期间。
应用106可以使用应用逻辑114来执行任何功能或功能的组合。例如,在上述示例中,应用逻辑114执行将网站数据转换为上传到分布式索引系统的形式的过程。应用逻辑114针对于在任何给定时间分配给它的具有一个或多个桶的一组桶116执行这些操作。在一些示例中,应用逻辑114还使用数据存储库118中提供的资源来执行其操作。资源可以包括数据、程序代码等。例如,假设应用逻辑114执行依赖于与用户的当前位置相关联的地图信息的一些功能;在这种情况下,资源可以对应于相对大的地图文件。
在桶管理器104指示拥有新桶之后,应用逻辑114必须执行可能耗时的将适当的应用资源加载到数据存储库118中的任务。在桶管理器104指示移除桶时,应用逻辑114必须执行从数据存储库118清除应用资源的潜在耗时任务。这些事件在本文中更一般地称为上下文改变。
S&N系统108包括存储和检索组件120和通知组件122。存储和检索组件120根据来自桶管理器104的指令在数据存储库124中存储和移除数据节点。如下面将更详细地描述的,数据节点通常描述分布式系统的分配相关状态。通知组件122向桶管理器104通知数据存储装置124中的数据节点已经发生的任何改变。通知组件122响应于从桶管理器104接收到监视请求(回叫请求)而执行该任务。在一个非限制性实现中,S&N系统108可以使用2010USENIX年度技术会议2010的会议记录的第14页的Hunt等人的"zookeeper:Wait-freeCoordination for internet-scale Systems"中描述Zookeeper体系结构的。然而,注意,Zookeeper体系结构指定用于响应于与应用(其定义存储什么数据)的直接交互而存储数据的通用框架,而图1的体系结构示出应用106经由桶管理器104的中介与S&N系统108交互。进一步注意,Zookeeper体系结构简单地存储数据,而不了解数据表示什么;应用将含义附加到数据。在其它实现中,桶管理器104可以与除了采用Zookeeper体系结构的S&N系统之外的其它S&N系统结合工作。
在一个实现中,桶管理器104通过由S&N系统108提供的一组应用编程接口(API)与S&N系统108交互。应用106通过由桶管理器104提供的一组API与桶管理器104交互。
根据一个技术优点,逻辑组件的分层结构102使用通用桶管理器104来管理桶到应用106的分配,而不是依赖于每一应用开发者来创建定制逻辑,该定制逻辑在应用级上执行此功能。因此,该设计简化了应用的设计。应用开发者仅需要提供接口,该接口允许应用106例如通过桶管理器104提供的API与桶管理器104交互。
实际上,应用开发者还产生一组将管理桶管理器104的操作的初始化参数。当桶管理器104被初始化时,应用106可以将该组初始化参数转发到桶管理器104。如这里所使用的,术语“参数”是指由参数变量(诸如超时时段)和参数值(诸如1秒)组成的一对。
在非限制的情况下,一个这样的参数指定超时时段,该超时时段控制桶管理器104何时可以认为新引入的计算设备准备好接受桶。另一参数指定超时时段,该超时时段控制桶管理器104何时可以将最近移除的计算设备视为真正离开分布式系统。另一参数指定每一计算设备优选拥有的桶的最佳数目。另一参数指定每一计算设备将接受的桶的最大数目。另一参数指定每一计算设备将接受的桶的最小数目。另一参数指定计算设备的子集是否可作为备用计算设备来操作,该备用计算设备直到遇到指定的故障状况才接受桶。一个或多个其它参数可以指定允许分布式系统超过一个或多个其它阈值的时间量(例如,通过超过桶的最佳数量)。另一参数指定要使用的哈希桶的数目(例如,256个桶,512个桶等)。另一参数指定应用计划使用的计算设备的数量,等等。这些参数通过示例而非限制的方式来描述;其他实现可以使用上面未提到的其他参数,和/或可以省略上面提到的参数中的一个或多个。
还要注意,应用106不直接与S&N系统108交互。替代地,应用106直接与桶管理器104交互,桶管理器104又与S&N系统108交互。该规定还简化了应用开发者创建应用的任务,例如,因为应用开发者不需要建立用于与S&N系统108交互的定制接口。
根据另一技术优点,组成分布式系统的计算设备在管理桶的过程中不需要彼此通信。替代地,计算设备经由S&N系统108的中介间接地协调它们的行为。这种设置减少了对任何计算设备的负载,特别是在计算设备具有作为引导者操作的桶管理器的情况下。
根据另一技术优点,桶管理器104可被配置为减少由添加和移除桶引起的上下文改变的数目。如将在下面更全面地解释的,桶管理器104部分地通过应用一个或多个超时时段来执行该任务,以确保新添加的计算设备在向其分配桶之前是稳定的,和/或确保新分配的设备在移除其桶之前确实已离开。以另一种方式陈述,这些规定阻碍了上下文中的不必要的或低效的改变,并且具有促进由计算设备执行的任务与计算设备本身之间的紧密性或“粘性”的效果。这在应用106花费大量时间来从数据存储库118加载和/或移除资源的那些情况下尤其有益。同时,桶管理器104对分布式系统中的改变保持足够的响应,以防止真正离开分布式系统的计算设备声称对桶的所有权,这可能负面影响性能。
图1所示的架构优于用于分配任务的主从架构,因为主从架构需要使用专用主计算设备。当主计算设备发生故障或变得过载时,主从框架可以提供低于标准的性能。图1所示的体系结构具有优于其它分布式分配算法的优点,因为如上所述,它促进了任务和计算设备之间的紧密性,并因此减少了昂贵的上下文改变的数量。它还提供了通用桶管理器,该通用桶管理器可以被“插入”到不同的应用中而无需显著的应用设计工作。
图2示出了用于在图1的数据存储库124中存储数据节点的一个数据结构202。从高级观点来看,数据结构202以节点的分层结构存储信息。换句话说,数据结构202在树状文件系统中存储信息。桶管理器104可以通过指定从数据树的根节点到所考虑的数据节点的路径来识别树中的数据节点。数据树的根节点标识特定应用(这里是“App1”)。在一些环境中,数据存储库124可存储多个数据结构,多个数据结构与具有多个相应根节点的多个相应应用(例如,“App1”、“App2”、“App3”等)相关联。这允许桶管理器104同时管理针对于在相同计算设备上运行的两个或更多个应用的桶分配。
数据结构202的第一数据部分204属于“机器”数据分支。从该分支发出的数据节点在任何给定时间识别被包括在分布式系统中的计算设备。更具体地,每个计算设备在其加入分布式系统时在第一数据部分204中创建数据节点。在与数据节点相关联的计算设备关闭、出故障或以其他方式停止服务所考虑的特定应用会话时,存储和检索组件120还自动移除第一数据部分204中的任何数据节点。在这个意义上,第一数据部分204中的数据节点可以被认为是短暂或非持久的。
此外,当创建这种类型的节点时,存储和检索组件120在第一数据部分204中附加如下的数据,该数据标识该节点相对于其它节点的时间位置。桶管理器104可以利用与第一数据部分204中的数据节点相关联的顺序信息来标识计算设备加入分布式系统的时间顺序。桶管理器104又可以使用该洞察来确定它是否应当在任何给定时间承担领导者的角色。(关于该行为的附加信息将在下面图3的描述中阐述。)
数据结构202的第二数据部分206与“Machine2Buckets”数据路径相关联,在给定指定计算设备的情况下,该“Machine2Buckets”数据路径提供关于分配给该特定计算设备的桶的信息。换言之,“Machine2Buckets”数据路径将指定的机器映射到其相关联的桶。领导者计算设备创建并修改第二数据部分206中的数据节点。跟随者计算设备可以查阅第二数据部分206以确定哪些桶已经被分配给它。即,如果跟随者计算设备对应于计算设备X,则该设备咨询第二数据部分206中的与设备X相关联的数据节点,以找出向其分配了哪些桶。在计算设备关闭、出故障或以其他方式停止服务所考虑的应用会话时,存储和检索组件120将针对计算设备的该信息保留在第二数据部分202中。在这个意义上,第二数据部分206中的数据节点可以被认为是非短暂的或持久的。与第一数据部分204不同,第二数据部分206的数据节点不捕获创建数据节点的顺序。
数据结构202的第三数据部分208在“Bucket2Machine”数据路径下存储数据节点,该数据路径提供关于在给定指定桶的情况下什么计算设备当前正在声称桶的所有权的信息。换句话说,“Bucket2Machine”数据将指定的桶映射到当前拥有该桶的机器。要求桶的所有权的每个计算设备可以在第三数据部分208中创建数据节点以记住该事件。放弃对桶的控制的每个计算设备可以移除第三数据部分208中的对应数据节点。在要求桶的所有权之前,计算设备还可以查阅第三数据部分208以确定该桶当前是否由另一计算设备拥有。类似于第一数据部分204,第三数据部分208中的数据节点可以被认为是短暂的或非持久的。与第一数据部分204不同,第三数据部分208中的数据节点不捕获创建数据节点的时间顺序。
图3提供了与三个计算设备(302,304,306)相关联的桶管理器如何利用数据存储库124中的数据节点来确定什么桶管理器应当作为领导者来操作的示例。这些数据节点具体地对应于由第一数据部分204提供的短暂有序数据节点。
在操作中,第一计算设备X 302的桶管理器在其初始化时创建第一顺序数据节点308。第二计算设备Y 304的桶管理器在其初始化时创建第二顺序数据节点310。第三计算设备Z 306的桶管理器在其初始化时创建第三顺序数据节点312。三个数据节点(308,310,312)包括标识它们的相对顺序的信息。此外,每个桶管理器登记以监视紧接在它自己的数据节点之前的任何数据节点。例如,当与第二计算设备Y 304相关联的数据节点310发生任何改变时,第三计算设备Z 306登记以接收通知。在发现数据节点310被移除时(例如,因为第二计算设备Y 304已发生故障或以其他方式关闭),第三计算设备Z 306的桶管理器将登记以监视测紧接在前的数据节点-在这种情况下是数据节点308。最后,发现其不具有在前数据节点的桶管理器将承担领导者的角色。例如,第一计算设备X 302的桶管理器确定它具有最早创建的数据节点308,因此它应当担任领导者的角色。
图4示出了利用图1的逻辑组件的一个说明性分布式系统402。更具体地,分布式系统402包括三个代表性计算设备(404,406,408),尽管一些环境可以包括几十,几百,几千等计算设备。每个计算设备可以对应于服务器或任何其他类型的计算设备。部分C描述了每个计算设备可以包括的代表性硬件。每个计算设备还与S&N系统108交互。S&N系统108本身可以使用一个或多个计算设备(例如,服务器)来实现。在S&N系统108使用多个计算设备的情况下,它可以包括用于跨多个计算设备复制数据存储库124中的信息的机制。计算设备(404,406,408)可以经由点对点链路、局域网、广域网等或其任意组合与S&N系统108交互。
每个计算设备包括一个或多个应用实例和桶管理器。例如,计算设备X404包括通信地耦合到桶管理器414的应用实例A 410和应用实例B 412。每个应用实例执行特定于环境的应用操作。此外,每个应用实例将一组初始化参数加载到桶管理器414。类似地,计算设备Y 406包括应用实例A 416,应用实例B 418和桶管理器420。计算设备Z408包括应用实例A422,应用实例B 424和桶管理器426。桶管理器(414,420,426)在与不同的相应应用交互时在不同的独立分配空间中操作。然而,为了便于说明,剩余的描述将假定桶管理器(414,420,426)仅与诸如App A的单个应用协作工作。
在任何给定时间,只有一个桶管理器作为领导者操作;其它桶管理器作为跟随者操作。此外,在任何给定时间,每个应用实例可以针对一组桶来执行其任务。该组桶在计算设备上是不相交的(相对于同一应用)。这意味着在任何给定时间(相对于相同的应用)没有两个计算设备被分配相同的桶。这避免了当两个或多个计算设备针对相同任务执行重复工作时可能发生的错误。
图5至图7示出了用于将任务路由到图4的分布式系统中的桶的三个说明性工作路由组件(502,602,702)。从图5开始,哈希组件504生成与任务相关联的数据的哈希(例如但不限于128位哈希值)。例如,再次考虑应用对与网站相关联的数据执行处理的情况。哈希组件504可产生与网站相关联的URL和/或与网站相关联的页面内容等的哈希。哈希组件504可使用任何哈希算法来执行此任务,只要哈希算法在哈希空间上均匀分布哈希即可。可以使用的说明性哈希算法包括MD5算法(例如,在RFC1321(1992)中描述的),SHA族算法(例如,在RFC3174(2001)中描述的)等。为了仅提供一个非限制性示例,哈希组件504可以应用各种特定于环境的规则来归一化URL,向其附加随机信息(通过“盐化”它),然后使用MD5算法来处理所得信息以产生哈希。哈希组件504然后可提取哈希的n个最高有效位以生成与所考虑的任务相关联的桶ID。桶ID标识哈希空间的特定段。桶ID还标识特定桶。
工作管理组件506使用桶ID将任务请求转发到特定桶当前被分配到的计算设备。例如,假定第二计算设备Y 406当前拥有与桶ID相关联的特定桶。工作管理组件506可向计算设备Y 406转发任务请求。然后,在第二计算设备Y406上运行的应用实例获得执行该任务所需的任何数据,然后执行该任务本身。上述行为假定工作管理组件506能够访问由数据存储库124提供的指定计算设备和桶之间的关联的信息。
在图6的示例中,假设工作管理组件604最初不知道什么计算设备拥有该特定桶。工作管理组件604可通过如下的方式来处理该场景:首先将任务请求转发到任何随机选择的计算设备,例如第二计算设备Y 406等。工作管理组件604随后可依赖于第二计算设备Y406来将任务请求转发到实际拥有该特定桶的计算设备(假设第二计算设备Y 406当前不拥有该特定桶)。在这种情况下,第二计算设备Y 406将该请求转发到第三计算设备Z 408。该行为假定第二计算设备Y406可以使用数据存储库124中提供的信息来确定拥有该特定桶的计算设备。
在图7的示例中,再次假设工作管理组件704最初不知道什么计算设备拥有该特定桶。并且再次假设工作管理组件704首先向第二计算设备Y 406转发任务请求。在这种情况下,第二计算设备Y 406标识拥有想得到的桶(sought-after bucket)的计算设备,并将该信息返回给工作管理组件704。工作管理组件704使用该信息将任务请求发送到适当的计算设备,这里对应于第三计算设备Z408。
在上述示例中,在将任务请求发送到当前拥有桶的目标计算设备时,有机会重新分配目标桶。目标计算设备可以通过将任务请求自动转发到正确的计算设备来解决该场景。或者,目标计算设备可将任务请求标记为失败,据此工作管理组件可重复上述路由过程。
工作路由组件的上述三个示例是以说明而非限制的精神来描述的。其他实现可以使用其他策略来将任务转发到适当的计算设备。
图8示出了使用图1的逻辑组件实现上传服务的分布式系统802。在此环境中,爬虫系统804爬行因特网806以发现新的网站,或新修改的网站(与紧接在前的爬虫操作相比)。爬虫系统804将关于每个这样标识的网站的数据条目存储在数据存储库808中。工作路由组件810然后向包括多个上传服务器的分布式系统发送一个或多个任务请求(812,814,816)。在一种情况下,每个这样的任务请求指示上传服务器来处理如下的网站数据,该网站数据与映射到上传服务器所拥有的桶的单个URL相关联。在另一种情况下,每个任务请求指示上传服务器处理一批网站,该一批网站具有映射到上传服务器所拥有的桶的相应URL。在接收到这样的请求时,上传服务器从数据存储库808拉取适当的数据并对其进行处理。更具体地,每个上传服务器将与网站相关联的数据转换成可由分布式索引系统818使用的反向索引格式。上传服务器然后将经处理的数据传送到分布式索引系统818。搜索引擎(未示出)使用分布式索引系统818来将用户提交的查询项映射到包含那些查询项的网站。
上传服务器(812,814,816)包括各自的桶管理器(BM)(820,822,824),它们共同地将桶分配给上传服务器(812,814,816)。为了执行该任务,每个桶管理器与S&N系统108交互。如上所述,在任何给定时间,只有一个桶管理器作为领导者操作。此外,在任何给定时间,没有两个上传服务器拥有相同的桶。
在上传服务中,桶分配是“昂贵的”,因为它需要相当多的时间和资源来执行,并且因此不利地影响系统吞吐量。例如,一旦被分配了新的桶,上传服务就需要解析不同的文件以确定关于与桶相关联的工作的上传过程的状态。上传服务还需要识别和移除桶的先前所有者留下的临时文件,等等。这里描述的技术有助于减少这些昂贵的桶重新分配。
图8的示例在说明而非限制的精神中呈现。其它实现可以使用图4所示的体系结构来执行任何其它应用任务。
B.示例性过程
图9-18以流程图的形式示出了解释部分A的分布式系统的操作的过程。由于在部分A中已经描述了作为分布式系统操作的基础的原理,因此在该部分中将以概要的方式来解决一些操作。如在详细描述的前序部分中所指出的,每个流程图被表示为以特定顺序执行的一系列操作。但是这些操作的顺序仅仅是代表性的,并且可以以任何方式改变。
此外,将结合图2的数据结构202参考图4的分布式系统402来解释图9-18。为了简化说明,这些图将该分布式系统402中的一个特定计算设备称为计算设备X。计算设备X具有桶管理器XBM和应用实例XAPP。例如,参考图4,计算设备X可以对应于计算设备X404,桶管理器XBM可以对应于桶管理器414,并且应用实例XAPP可以对应于应用实例A410。
图9示出了当计算设备X启动时由桶管理器XBM执行的过程902。更具体地,在框904中,计算设备X启动。在框906中,桶管理器XBM与S&N系统108交互以登记监视路径。更具体地,桶管理器XBM登记以在“Machine2Buckets”路径(在第二数据部分206中)下接收对与计算设备X有关的分配信息的改变的通知。桶管理器XBM还在“Bucket2Machine”数据路径(在第三数据部分208中)下接收用于所有桶的信息。给定指定桶,该信息揭示哪个计算设备拥有该桶。在框908中,桶管理器XBM在“机器”数据路径(在第一数据部分204中)下创建短暂有序节点,从而登记其存在和其加入分布式系统402的时间。
框910中,桶管理器XBM确定它是否是领导者。桶管理器XBM可以通过确定其短暂有序节点是否是第一数据部分204中的第一创建节点来执行该任务。如果是,则计算设备X的桶管理器XBM担当领导者的角色。在框912中,桶管理器XBM然后在第一数据部分204中的任何数据节点改变时接收通知。例如,当新计算设备加入分布式系统402时,或者当已有的计算设备离开分布式系统402时,这些节点将改变。可替代地,如果否定地回答框910,则计算设备X承担作为跟随者的角色。(尽管未在图9中反映,但领导者计算设备同时作为跟随者计算设备操作)。
图10至图12示出了计算设备X的桶管理器XBM在担当领导者角色时执行的操作。从图10开始,该图示出了用于启动对分布式系统402中的计算设备的分配的更新的过程1002。在框1004中,桶管理器XBM确定分布式系统402中的计算设备是否有任何改变。桶管理器XBM在它从S&N系统108(在“机器”路径下)接收到通知时确定存在改变,将该改变通知给第一数据部分204中的一个或多个数据节点。
假设桶管理器XBM具体确定新计算设备已经加入分布式系统。如果是,则在框1006,桶管理器XBM登记具有时间段ΔT1的监视。该时间段对应于由应用实例XAPP在桶管理器XBM初始化时设置的参数。在框1008中,桶管理器XBM确定新计算设备是否随后离开分布式系统402。如果该事件发生在由桶管理器414定义的时间段ΔT1内,则桶管理器414将忽略新计算设备。另一方面,在框1010中,如果时间段期满且新计算设备没有被移除,则桶管理器XBM将开始更新对计算设备的桶分配。也就是说,在此时,桶管理器XBM认为新计算设备是稳定的。
可替换地,假设桶管理器XBM在框1004中确定已有计算设备已经离开分布式系统402。如果是,则在框1012中,桶管理器XBM登记具有时间段ΔT2的监视。在框1014中,桶管理器XBM确定已离开的计算设备是否已重新加入分布式系统402。如果该事件发生在由桶管理器XBM定义的时间段内,则桶管理器XBM将忽略计算设备的离开。在框1010中,如果时间段期满且不存在已离开分布式系统402的计算设备的重新联合,则桶管理器XBM将开始更新对计算设备的桶分配。
图11示出了过程1102,其中当新计算设备加入分布式系统402时,桶管理器XBM更新分配。在框1104中,桶管理器XBM确定是否存在任何未分配的桶。如果是,则在框1106中,桶管理器XBM可以将一定数量的桶分配给新计算设备,该数量对应于在初始化参数组中指定的桶的优选数量。在框1108中,桶管理器XBM确定计算设备是否可以接受更多的桶,但是没有更多的未分配的桶要给予它。如果是,则在框1110,桶管理器XBM可从一个或多个其它计算设备移除桶并将这些桶重新分配给新加入的计算设备。例如,桶管理器XBM可以从具有多于其优选数量的至少一个已有计算设备中移除桶,并将这些桶重新分配给新加入的计算设备。
图12示出了过程1202,其中当已有计算设备离开分布式系统402时,桶管理器XBM更新分配。在框1204中,桶管理器XBM将来自离开的计算设备的一个或多个桶分配给具有最少数量的桶的一个或多个已有计算设备,或以其他方式表示对附加桶的最大需求的一个或多个已有计算设备。
注意,图11和图12中描述的桶分配策略是以说明而非限制的精神阐述的。其他实现可以使用其他策略来在分布式系统402中引入和移除计算设备时将桶分配给机器。例如,在另一种情况下,领导者计算设备可以允许计算设备的子集不接受桶。分布式系统402可以在分布式系统402中出现规定的故障状况(例如服务度量低于规定的阈值)时依赖于这些无负载的计算设备。
图13和图14示出了计算设备X的桶管理器XBM在以跟随者角色工作时执行的操作。更具体地,图13示出了当桶管理器XBM发现其已经由领导者分配了至少一个新桶时由桶管理器XBM执行的过程1302。领导者可对应于另一计算设备的桶管理器(例如,计算设备Y的桶管理器YBM)或同一计算设备X的桶管理器XBM。
在框1304中,桶管理器XBM从S&N系统108接收通知它新的桶已被分配给它的计算设备的通知。它接收到该通知,因为它先前已经在计算设备X的“Machine2Buckets”数据路径上登记了监视。在框1306,桶管理器XBM确定已被分配的桶当前是否被另一计算设备拥有。通过询问“Bucket2Machine”数据路径以发现它是否包含任何数据,它从而执行该任务。假设框1306的回答是肯定的。在框1308中,桶管理器414在“Bucket2Machine”数据路径上登记监视。在框1310中,桶管理器XBM接收先前声称桶的所有权的设备已经放弃该所有权的通知。在框1312中,通过再次检查“Machine2Buckets”数据路径,桶管理器XBM确认它是否仍然被分配了所考虑的桶。
此时,桶管理器XBM准备好承担新分配的桶的所有权。在框1314中,桶管理器XBM使用addbucket回调来向与计算设备X相关联的应用实例XAPP发出如下的通知:它应当开始处理新分配的桶的任务。在框1316中,桶管理器XBM通过在第三数据部分208中(即在“Bucket2Machine”数据路径下)设置适当的数据节点,正式地要求新分配的桶的所有权。
图14示出了由跟随者计算设备X的桶管理器XBM在移除分配给它的桶时执行的过程1402。在框1404中,桶管理器XBM在“Machine2Buckets”数据路径下接收指示先前分配给它的桶已被移除的通知。在框1406中,桶管理器XBM通过如下的方式来作出响应:通知运行在计算设备X上的应用实例XAPP移除先前分配的桶。在框1408中,桶管理器XBM通过如下方式来正式放弃所移除的桶的所有权:移除“Bucket2Machine”数据路径下的第三数据部分208中的适当短暂数据节点。
图15和16示出了由应用实例XAPP在接收到新桶的通知(相对于图15)或已有桶的移除(相对于图16)时执行的操作。更具体地,图15示出了用于处理将新桶分配给应用实例XAPP的情况的过程1502。在框1504中,应用实例XAPP从其相关联的桶管理器XBM接收已经向其分配了新桶的通知。在框1506中,应用实例XAPP加载使其能够执行与新分配的桶相关联的任务的适当资源。在框1508中,应用实例XAPP执行这些任务(例如,在由工作管理组件馈送这些任务时)。
图16示出了用于处理由应用实例XAPP移除已有桶的情况的过程1602。在框1604中,应用实例XAPP从其相关联的桶管理器XBM接收已有桶已被移除的通知。在框1606中,应用实例XAPP移除其先前用于处理与现在已被移除的桶相关联的任务的资源。
图17和图18一起示出了过程1702,该过程提供由桶管理器XBM以其领导者和跟随者角色执行的操作的概要。再次假设桶管理器XBM与计算设备X相关联。
在框1704中,过程1702涉及基于从应用实例XAPP接收的初始化参数来初始化桶管理器XBM。桶管理器XBM对应于通用组件,其可以由不同的初始化参数集重新配置以结合不同的应用实例工作。在框1706和1708中,桶管理器XBM与S&N系统108交互以确定计算设备X 404是否要被分配领导者计算设备的角色。
当在领导者角色中操作时,在框1710中,桶管理器XBM与S&N系统108交互以确定包括在分布式系统402中的一组计算设备的成员是否有任何改变。在框1712中,当成员资格发生改变时,桶管理器XBM确保该改变是稳定的。在框1714中,当确定改变稳定时,桶管理器XBM更新针对分布式系统402中的计算设备进行的桶的分配,使得没有两个计算设备被分配相同的桶,每个桶对应于待执行的工作的配额。在框1716中,桶管理器XBM与S&N系统108交互以记录桶的分配。
当在跟随者角色中操作时,在图18的框1802中,桶管理器XBM与S&N系统108交互以确定是否存在分配给计算设备X的桶的改变。在框1804中,当存在桶的改变时,桶管理器XBM向应用实例XAPP通知桶的改变。在框1806中,桶管理器XBM与S&N系统108交互以要求对任何已被新分配到桶管理器XBM的桶的所有权,和/或放弃对任何已被新移除的桶的所有权。
C.代表性计算设备
图19示出了可用于实现上述附图中阐述的机制的任何方面的计算设备1902。例如,参考图4,图19所示的计算设备1902的类型可用于实现分布式系统402中的任何计算设备(404,406,408),或用于实现S&N系统108的任何计算设备等。在所有情况下,计算设备1902表示物理的和有形的处理机制。
计算设备1902可以包括一个或多个硬件处理器1904。硬件处理器可以包括但不限于一个或多个中央处理单元(CPU),和/或一个或多个图形处理单元(GPU),和/或一个或多个专用集成电路(ASIC)等。更一般地,任何硬件处理器可以对应于通用处理单元或专用处理器单元。
计算设备1902还可以包括对应于一个或多个计算机可读介质硬件单元的计算机可读存储介质1906。计算机可读存储介质1906保存任何种类的信息1908,诸如机器可读指令,设置,数据等。例如,在没有限制的情况下,计算机可读存储介质1906可以包括一个或多个固态设备,一个或多个磁硬盘,一个或多个光盘,磁带等。计算机可读存储介质1906的任何实例可以使用用于存储和检索信息的任何技术。此外,计算机可读存储介质1906的任何实例可以表示计算设备1902的固定或可移除单元。此外,计算机可读存储介质1906的任何实例可以提供信息的易失性或非易失性保留。
计算设备1902可以以不同的方式利用计算机可读存储介质1906的任何实例。例如,计算机可读存储介质1906的任何实例可以表示用于在计算设备1902执行程序期间存储瞬态信息的硬件存储单元(诸如随机存取存储器(RAM)),和/或用于在更永久的基础上保留/存档信息的硬件存储单元(诸如硬盘)。在后一种情况下,计算设备1902还包括一个或多个检索来自计算机可读存储介质1906的实例的信息的一个或多个驱动机构1910(诸如硬盘驱动器机构)。
当硬件处理器1904执行存储在计算机可读存储介质1906的任何实例中的计算机可读指令时,计算设备1902可以执行上述任何功能。例如,计算设备1902可以执行计算机可读指令以执行部分B中描述的过程的每个块。
可替换地或附加地,计算设备1902可以依赖于一个或多个其它硬件逻辑单元1912来使用逻辑门的任务专用集合来执行操作。例如,硬件逻辑单元1912可以包括硬件逻辑门的固定配置,例如在制造时创建和设置,并且此后不可改变。可替换地或附加地,其它硬件逻辑单元1912可以包括可编程硬件逻辑门的集合,这些可编程硬件逻辑门可以被设置为执行不同的专用任务。后一类器件包括但不限于可编程阵列逻辑器件(PAL),通用阵列逻辑器件(GAL),复杂可编程逻辑器件(CPLD),现场可编程门阵列(FPGA)等。
图19大体指示硬件逻辑电路1914包含硬件处理器1904,计算机可读存储媒体1906和/或其它硬件逻辑单元1912的任何组合。即,计算设备1902可以采用执行计算机可读存储介质1906中提供的机器可读指令的硬件处理器1904和/或使用硬件逻辑门的固定和/或可编程集合执行操作的一个或多个其它硬件逻辑单元1912的任何组合。更一般地讲,硬件逻辑电路1914对应于基于存储在硬件逻辑单元中和/或以其他方式包含在硬件逻辑单元中的逻辑来执行操作的任何类型的一个或多个硬件逻辑单元。
在一些情况下(例如,在计算设备1902代表用户计算设备的情况下),计算设备1902还包括用于接收各种输入(经由输入设备1918)和用于提供各种输出(经由输出设备1920)的输入/输出接口1916。说明性的输入设备包括键盘设备,鼠标输入设备,触摸屏输入设备,数字化板,一个或多个静态图像相机,一个或多个视频相机,一个或多个深度相机系统,一个或多个麦克风,语音识别机制,任何移动检测机制(例如,加速计,陀螺仪等)等。一种特定的输出机制可以包括显示设备1922和相关联的图形用户界面呈现(GUI)1924。显示设备1922可以对应于液晶显示设备,发光二极管显示(LED)设备,阴极射线管设备,投影机构等。其它输出设备包括打印机,一个或多个扬声器,触觉输出机构,存档机构(用于存储输出信息)等。计算设备1902还可以包括用于经由一个或多个通信管道1928与其他设备交换数据的一个或多个网络接口1926。一个或多个通信总线1930将上述单元通信地耦合在一起。
通信管道1928可以以任何方式实现,例如通过局域计算机网络,广域计算机网络(例如因特网),点对点连接等,或其任何组合。通信管道1928可以包括由任何协议或协议组合管理的硬连线链路,无线链路,路由器,网关功能,名称服务器等的任何组合。
图19示出了由分立单元的离散集合组成的计算设备1902。在一些情况下,单元的集合可以对应于在具有任何形状因数的计算设备机箱中提供的分立硬件单元。在其它情况下,计算设备1902可以包括集成了图1所示的两个或多个单元的功能的硬件逻辑单元。例如,计算设备1902可以包括片上系统(SoC或SOC),其对应于组合了图19所示的两个或更多个单元的功能的集成电路。
以下概述提供了本文阐述的技术的说明性方面的非穷尽集合。
根据第一方面,描述了一种用于在计算设备的分布式系统内的操作的计算设备。该计算设备包括用于执行规定服务的应用实例。它还包括桶管理器,该桶管理器被配置为:从应用实例接收一组初始化参数;以及与存储和通知(S&N)系统交互以确定计算设备是否将被分配领导者计算设备的角色。当以领导者角色操作时,桶管理器被配置为:与S&N系统交互以确定被包括在分布式系统中的计算设备的成员资格是否有任何改变;当成员资格发生改变时,确保改变稳定;当确定改变是稳定的时,更新对分布式系统中的计算设备的桶的分配,使得没有两个计算设备被分配相同的桶,每个桶对应于待执行的工作的配额;并与S&N系统交互以记录桶的分配。当以跟随者角色操作时,桶管理器被配置为:与S&N系统交互以确定是否存在被分配给计算设备的桶的改变;当存在桶的改变时,向应用实例通知桶的改变;以及与S&N系统交互以要求对任何已被新分配的桶的所有权,和/或放弃对任何已被新移除的桶的所有权。计算设备包括硬件逻辑电路系统,硬件逻辑电路系统包括:(a)通过执行存储在存储器中的机器可读指令来执行操作的一个或多个硬件处理器,和/或(b)使用逻辑门的任务专用集合来执行操作的一个或多个其它硬件逻辑单元。
根据第二方面,规定的服务对应于:处理与一个或多个相应网络资源相关联的一个或多个数据条目,以产生一个或多个经处理的数据条目;以及将经处理的数据条目上传到分布式索引系统。搜索引擎使用分布式索引系统来将输入查询匹配到网络资源。
根据第三方面,S&N系统提供:数据存储库,其用于存储分层数据结构中的数据节点;以及通知组件,其被配置为向计算设备通知数据节点中的改变。
根据关于第三方面的第四方面,数据存储库包括:第一组数据节点,其标识当前是分布式系统的成员的计算设备;第二组数据节点,其标识当前由领导者桶管理器分配给分布式系统中的每个计算设备的桶;以及第三组数据节点,其标识如由分布式系统中的计算设备声称的桶的所有权。第一组数据节点是非持久性的,因为这些数据节点将在涉及应用实例的会话终止时被自动移除。第二组节点是持久的,因为这些节点在涉及应用实例的会话终止时不会被自动移除。第三组节点也是非持久的。
根据关于第四方面的第五方面,第一组数据节点还包括与其相关联的数据,该数据指示第一组数据节点中的数据节点相对于彼此的顺序。
根据第六方面,桶管理器还与执行另一规定服务的另一应用实例交互,该另一应用实例与另一组初始化参数相关联。
根据第七方面,一个初始化参数指定计算设备优选拥有的桶的数量。
根据第八方面,每个桶与桶标识符相关联。任务到桶的分配通过以下方式确定:创建与任务相关联的数据的哈希;以及将哈希映射到与特定桶相关联的桶标识符。
根据第九方面,在领导者角色中,桶管理器通过以下方式来确保改变是稳定的,从而对新计算设备已加入的确定作出响应:至多等待规定的时间量以确定新计算设备是否被移除,规定的时间量由一组初始化参数指定;以及如果新计算设备在规定的时间量内未被移除,则将新计算设备标识为稳定的。
根据第十方面,在领导者角色中,桶管理器通过以下方式来确保改变是稳定的,从而对已有计算设备已被移除的确定作出响应:至多等待规定的时间量以确定已有计算设备是否返回到计算设备群组,规定的时间量由一组初始化参数指定;以及如果已有计算未在规定的时间量内返回,则指定已有计算设备已离开群组。
根据第十一方面,在跟随者角色中,桶管理器通过以下方式来对已向其分配新桶的确定作出响应:与S&N系统交互以确定新桶当前是否由另一计算设备拥有;以及当新桶被另一计算设备拥有时,等待直到S&N系统指示在要求新桶的所有权之前另一计算设备已经放弃新桶的所有权。
根据第十二方面,描述了一种用于管理计算设备的分布式系统内的计算设备的操作的方法。方法包括:基于从安装在计算设备上的应用实例接收的一组初始化参数来初始化桶管理器,桶管理器对应于通用资源,通用资源可由不同组的初始化参数重新配置以结合不同的应用实例来工作;以及使用桶管理器来与存储和通知(S&N)系统交互以确定计算设备是否将被分配领导者计算设备的角色。当以领导者角色操作时,桶管理器操作为:与S&N系统交互以确定被包括在分布式系统中的一组计算设备的成员资格是否有任何改变;当成员资格发生改变时,确保该改变稳定;当确定改变是稳定的时,更新对分布式系统中的计算设备的桶的分配,使得没有两个计算设备被分配相同的桶,每个桶对应于待执行的工作的配额,通过创建与任务相关联的数据的哈希并且将哈希映射到与特定桶相关联的桶标识符来确定任务分配给桶的分配;并与S&N系统交互以记录桶的分配。当以跟随者角色操作时,桶管理器运行为:与S&N系统交互以确定是否存在分配给计算设备的桶的改变;当存在桶的改变时,向应用实例通知桶的改变;以及与S&N系统交互以要求对任何已被新分配的桶的所有权,和/或放弃对任何已被新移除的桶的所有权。
根据关于第十二方面的第十三方面,在领导者角色中,桶管理器通过以下方式来确保改变是稳定的,从而对新计算设备已加入的确定作出响应:至多等待规定的时间量以确定新计算设备是否被移除,规定的时间量由一组初始化参数指定;以及如果新计算设备在规定的时间量内未被移除,则将新计算设备标识为稳定的。
根据与第十二方面有关的第十四方面,在领导者角色中,桶管理器通过以下方式来确保改变是稳定的,从而对已有计算设备已被移除的确定作出响应:至多等待规定的时间量以确定已有计算设备是否返回到计算设备群组,规定的时间量由一组初始化参数指定;以及如果已有计算未在规定的时间量内返回,则指定已有计算设备已离开群组。
根据与第十二方面有关的第十五方面,在跟随者角色中,桶管理器通过以下方式来对已向其分配新桶的确定作出响应:与S&N系统交互以确定新桶当前是否由另一计算设备拥有;以及当新桶被另一计算设备拥有时,等待直到S&N系统指示在要求新桶的所有权之前另一计算设备已经放弃新桶的所有权。
根据第十六方面,描述了一种分布式系统,其包括:多个计算设备;以及存储和通知(S&N)系统,S&N系统被配置为在分层数据结构中存储数据节点。每个计算设备包括桶管理器和应用实例。每个计算设备的桶管理器被配置为:从应用实例接收一组初始化参数;以及与S&N系统交互以确定计算设备是否将被分配领导者计算设备的角色。当以领导者角色操作时,桶管理器被配置为:与S&N系统交互以确定包括在分布式系统中的计算设备的成员资格是否有任何改变;当成员资格发生改变时,确保改变稳定;当确定改变是稳定的时,更新对分布式系统中的计算设备的桶的分配,使得没有两个计算设备被分配相同的桶,每个桶对应于待执行的工作的配额;并与S&N系统交互以记录桶的分配。当以跟随者角色操作时,桶管理器被配置为:与S&N系统交互以确定是否存在分配给计算设备的桶的改变;当存在桶的改变时,向应用实例通知桶的改变;以及与S&N系统交互以要求对任何已被新分配的桶的所有权,和/或放弃对任何已被新移除的桶的所有权。每个计算设备包括硬件逻辑电路系统,硬件逻辑电路系统包括:(a)通过执行存储在存储器中的机器可读指令来执行操作的一个或多个硬件处理器,和/或(b)使用任务特定的逻辑门集合来执行操作的一个或多个其它硬件逻辑单元。
根据与第十六方面有关的第十七方面,在领导者角色中,桶管理器通过以下方式来确保改变是稳定的,从而对新计算设备已加入的确定作出响应:至多等待规定的时间量以确定新计算设备是否被移除,规定的时间量由一组初始化参数指定;以及如果新计算设备在规定时间量内未被移除,则将新计算设备标识为稳定的。
根据与第十六方面有关的第十八方面,在领导者角色中,桶管理器通过以下方式来确保改变是稳定的,从而对已有计算设备已被移除的确定作出响应:至多等待规定的时间量以确定已有计算设备是否返回到计算设备群组,规定的时间量由一组初始化参数指定;以及如果已有计算未在规定时间量内返回,则指定已有计算设备已离开群组。
根据第十九方面,关于第十六方面,分布式系统还包括工作路由组件,工作路由组件被配置为:接收与任务相关联的数据的哈希;将哈希映射到与特定桶相关联的桶标识符;以及将任务请求路由到当前与桶相关联的计算设备。
根据关于第十六方面的第二十方面,分布式系统还包括工作路由组件,工作路由组件被配置为:向分布式系统中的特定计算设备发送任务请求;以及当特定计算设备不拥有与任务请求相关联的桶时,依赖于特定计算设备将任务请求路由到当前拥有桶的另一计算设备。
第二十一方面对应于上述第一至第二十方面的任何组合(例如,任何逻辑上一致的置换或子集)。
第二十二方面对应于与第一至第二十一方面相关联的任何方法对应物,设备对应物,系统对应物,装置加功能对应物,计算机可读存储介质对应物,数据结构对应物,制品对应物,图形用户界面呈现对应物等。
最后,这里描述的功能可以采用各种机制来确保以符合适用法律、社会规范以及个体用户的期望和偏好的方式来处理任何用户数据。例如,该功能可以允许用户明确地选择进入(然后明确地选择退出)该功能的规定。该功能还可以提供适当的安全机制以确保用户数据的隐私(例如数据安全机制,加密机制,口令保护机制等)。
此外,本说明书可以在说明性挑战或问题的上下文中阐述各种概念。这种解释方式并不旨在暗示其他人以在此指定的方式理解和/或阐明挑战或问题。此外,这种解释方式并非旨在暗示权利要求中所述的主题限于解决所确定的挑战或问题;即,权利要求中的主题可以应用于除了本文描述的那些之外的挑战或问题的上下文中。
虽然已经用结构特征和/或方法动作专用的语言描述了本主题,但是应当理解,所附权利要求中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式而公开的。
Claims (15)
1.一种用于在计算设备的分布式系统内的操作的计算设备,包括:
用于执行规定服务的应用实例;
桶管理器,其被配置为:
从所述应用实例接收一组初始化参数;
与存储和通知(S&N)系统交互以确定所述计算设备是否将被分配领导者计算设备的角色;
当以领导者角色操作时:
与所述S&N系统交互以确定被包括在所述分布式系统中的所述计算设备的成员资格是否有任何改变;
当所述成员资格发生改变时,确保所述改变稳定;
当所述改变被确定为稳定时,更新对所述分布式系统中的计算设备的桶的分配,使得没有两个计算设备被分配相同的桶,每个桶对应于待执行的工作的配额;以及
与所述S&N系统交互以记录桶的分配;以及
当以跟随者角色操作时:
与所述S&N系统交互以确定是否存在被分配给所述计算设备的桶的改变;
当存在桶的改变时,向所述应用实例通知所述桶的改变;以及
与所述S&N系统交互以要求对任何已被新分配的桶的所有权,和/或放弃对任何已被新移除的桶的所有权,
所述计算设备包括硬件逻辑电路系统,所述硬件逻辑电路系统包括:(a)通过执行存储在存储器中的机器可读指令来执行操作的一个或多个硬件处理器,和/或(b)使用任务特定的逻辑门集合来执行操作的一个或多个其他硬件逻辑单元。
2.根据权利要求1所述的计算设备,其中所述S&N系统提供:
数据存储库,其用于存储分层数据结构中的数据节点;以及
通知组件,其被配置为向计算设备通知所述数据节点的改变。
3.根据权利要求2的所述计算设备,其中所述数据存储库包括:
第一组数据节点,所述第一组数据节点标识当前是所述分布式系统的成员的计算设备;
第二组数据节点,所述第二组数据节点标识当前被领导者桶管理器分配给所述分布式系统中的每个计算设备的桶;以及
第三组数据节点,所述第三组数据节点标识如由所述分布式系统中的所述计算设备声称的桶的所有权,
其中所述第一组数据节点是非持久性的,因为这些数据节点在涉及所述应用实例的会话终止时将被自动移除,
其中所述第二组节点是持久性的,因为这些节点在涉及所述应用实例的会话终止时将不会被自动移除,以及
其中所述第三组节点也是非持久性的。
4.根据权利要求1所述的计算设备,其中每个桶与桶标识符相关联,并且其中任务到桶的分配是通过以下方式确定的:
创建与所述任务相关联的数据的哈希;以及
将所述哈希映射到与特定桶相关联的桶标识符。
5.根据权利要求1所述的计算设备,其中在所述领导者角色中,所述桶管理器通过确保所述改变稳定来响应新计算设备已加入的确定,确保所述改变稳定通过如下方式来进行:
至多等待规定的时间量以确定所述新计算设备是否被移除,所述规定的时间量由所述一组初始化参数指定;以及
如果所述新计算设备在所述指定时间量内未被移除,则将所述新计算设备标识为稳定。
6.根据权利要求1所述的计算设备,其中在所述领导者角色中,所述桶管理器通过确保所述改变稳定来响应确定已有计算设备已被移除的确定,确保所述改变稳定通过如下方式来进行:
至多等待规定的时间量以确定所述已有计算设备是否返回到所述计算设备群组,所述规定的时间量由所述一组初始化参数指定;以及
如果所述已有计算设备未在所述规定的时间量内返回,则标明所述已有计算设备已离开所述群组。
7.根据权利要求1所述的计算设备,其中在所述跟随者角色中,通过如下方式来响应新桶已经被分配给所述桶管理器的确定:
与所述S&N系统交互以确定所述新桶当前是否被另一计算设备拥有;以及
当所述新桶被另一计算设备拥有时,在要求所述新桶的所有权之前等待,直到所述S&N系统指示所述另一计算设备已经放弃所述新桶的所有权为止。
8.一种用于管理计算设备的分布式系统内的计算设备的操作的方法,包括:
基于从安装在所述计算设备上的应用实例接收的一组初始化参数来初始化桶管理器,所述桶管理器对应于通用资源,所述通用资源能够由不同组的初始化参数重新配置以结合不同的应用实例来工作;
使用所述桶管理器来:
与存储和通知(S&N)系统交互以确定所述计算设备是否将被分配领导者计算设备的角色;
当以领导者角色操作时:
与所述S&N系统交互以确定被包括在所述分布式系统中的计算设备群组的成员资格是否有任何改变;
当所述成员资格发生改变时,确保所述改变稳定;
当所述改变被确定为稳定时,更新对所述分布式系统中的计算设备的桶的分配,使得没有两个计算设备被分配相同的桶,每个桶对应于待执行的工作的配额,
通过创建与所述任务相关联的数据的哈希并将所述哈希映射到与特定桶相关联的桶标识符来确定任务分配给桶的分配;以及
与所述S&N系统交互以记录所述桶的分配;以及
当以跟随者角色操作时:
与所述S&N系统交互以确定是否存在被分配给所述计算设备的桶的改变;
当存在桶的改变时,向所述应用实例通知所述桶的改变;以及
与所述S&N系统交互以要求对任何已被新分配的桶的所有权,和/或放弃对任何已被新移除的桶的所有权。
9.一种分布式系统,包括:
多个计算设备;
存储和通知(S&N)系统,所述S&N系统被配置为在分层数据结构中存储数据节点;
每个计算设备包括桶管理器和应用实例;
每个计算设备的所述桶管理器被配置为:
从所述应用实例接收一组初始化参数;
与所述S&N系统交互以确定所述计算设备是否将被分配领导者计算设备的角色;
当以领导者角色操作时:
与所述S&N系统交互以确定被包括在所述分布式系统中的所述计算设备的成员资格是否有任何改变;
当所述成员资格发生改变时,确保所述改变稳定;
当所述改变被确定为稳定时,更新对所述分布式系统中的计算设备的桶的分配,使得没有两个计算设备被分配相同的桶,每个桶对应于待执行的工作的配额;以及
与所述S&N系统交互以记录所述桶的分配;以及
当以跟随者角色操作时:
与所述S&N系统交互以确定是否存在被分配给所述计算设备的桶的改变;
当存在桶的改变时,向所述应用实例通知所述桶的改变;以及
与所述S&N系统交互以要求对任何已被新分配的桶的所有权,和/或放弃对任何已被新移除的桶的所有权,
每个计算设备包括硬件逻辑电路系统,所述硬件逻辑电路系统包括:(a)通过执行存储在存储器中的机器可读指令来执行操作的一个或多个硬件处理器,和/或(b)使用任务特定的逻辑门集合来执行操作的一个或多个其它硬件逻辑单元。
10.根据权利要求9所述的分布式系统,还包括工作路由组件,所述工作路由组件被配置为:
向所述分布式系统中的特定计算设备发送任务请求;以及
当所述特定计算设备不拥有与所述任务请求相关联的桶时,依赖于所述特定计算设备将所述任务请求路由到当前拥有所述桶的另一计算设备。
11.根据权利要求1所述的计算设备,其中所述规定服务对应于:
处理与一个或多个相应网络资源相关联的一个或多个数据条目,以产生一个或多个经处理的数据条目;以及
将所述经处理的数据条目上传到分布式索引系统,
搜索引擎使用所述分布式索引系统来将输入查询匹配到web资源。
12.根据权利要求3所述的计算设备,其中所述第一组数据节点还包括与其相关联的、指示所述第一组数据节点中的数据节点相对于彼此的顺序的数据。
13.根据权利要求1所述的计算设备,其中所述桶管理器还与执行另一规定服务的另一应用实例交互,所述另一应用实例与另一组初始化参数相关联。
14.根据权利要求1所述的计算设备,其中一个初始化参数指定所述计算设备优选拥有的桶的数目。
15.根据权利要求9所述的分布式系统,还包括工作路由组件,所述工作路由组件被配置为:
接收与任务相关联的数据的哈希;
将所述哈希映射到与特定桶相关联的桶标识符;以及
将任务请求路由到当前与所述桶相关联的计算设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/460,119 US11188389B2 (en) | 2019-07-02 | 2019-07-02 | Distributed system that promotes task-machine affinity |
US16/460,119 | 2019-07-02 | ||
PCT/US2020/033894 WO2021002970A1 (en) | 2019-07-02 | 2020-05-21 | Distributed system that promotes task-machine affinity |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114096950A true CN114096950A (zh) | 2022-02-25 |
Family
ID=71070033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080048663.4A Pending CN114096950A (zh) | 2019-07-02 | 2020-05-21 | 提升任务-机器紧密性的分布式系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11188389B2 (zh) |
EP (1) | EP3994575A1 (zh) |
CN (1) | CN114096950A (zh) |
WO (1) | WO2021002970A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266634B2 (en) | 2007-10-12 | 2012-09-11 | Microsoft Corporation | Resource assignment system with recovery notification |
US9538134B2 (en) * | 2013-12-23 | 2017-01-03 | Vonage Business Inc. | Method and system for resource load balancing in a conferencing session |
US10133661B2 (en) | 2016-08-16 | 2018-11-20 | Sap Se | Self tuning adaptive bucket memory manager |
-
2019
- 2019-07-02 US US16/460,119 patent/US11188389B2/en active Active
-
2020
- 2020-05-21 EP EP20731729.8A patent/EP3994575A1/en active Pending
- 2020-05-21 WO PCT/US2020/033894 patent/WO2021002970A1/en unknown
- 2020-05-21 CN CN202080048663.4A patent/CN114096950A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021002970A1 (en) | 2021-01-07 |
US20210004266A1 (en) | 2021-01-07 |
US11188389B2 (en) | 2021-11-30 |
EP3994575A1 (en) | 2022-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9542404B2 (en) | Subpartitioning of a namespace region | |
US11036754B2 (en) | Database table conversion | |
JP5902716B2 (ja) | 大規模記憶システム | |
US8832130B2 (en) | System and method for implementing on demand cloud database | |
CN112099918A (zh) | 容器化环境中的集群的实时迁移 | |
US9483482B2 (en) | Partitioning file system namespace | |
US10908834B2 (en) | Load balancing for scalable storage system | |
US20170161291A1 (en) | Database table conversion | |
US11831562B2 (en) | Distributed database-driven resource management and locking in a cloud native mobile core network node architecture | |
US20080133668A1 (en) | Managing intended group membership using domains | |
US9104501B2 (en) | Preparing parallel tasks to use a synchronization register | |
JP2017521778A (ja) | データ品質例外を処理するための方法、コンピュータ・プログラム、および例外エンジン | |
US11991094B2 (en) | Metadata driven static determination of controller availability | |
US8438573B2 (en) | Dependency on a resource type | |
US11948005B2 (en) | Managed integration of constituent services of multi-service applications | |
CN104580428A (zh) | 一种数据路由方法、数据管理装置和分布式存储系统 | |
US9898273B1 (en) | Dynamically updating APIS based on updated configuration file of a computing system | |
JP5646511B2 (ja) | 分散スペースを用いて分散プログラミング環境を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体 | |
CN114096950A (zh) | 提升任务-机器紧密性的分布式系统 | |
US8041671B2 (en) | Method and system for providing a homogeneous view of a distributed common information model (CIM) within a heterogeneous virtual system environment | |
JP6568232B2 (ja) | 計算機システム、及び、装置の管理方法 | |
US11943316B1 (en) | Database connection multiplexing for prepared statements | |
JP6909218B2 (ja) | ラック内のノードのための分散型オペレーティング・システム機能 | |
CN116974454A (zh) | 用于数据处理的方法、电子设备和计算机程序产品 | |
CN117130733A (zh) | 一种数据中台对接大数据集群的数据请求适配方法和装置 |
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 |