CN112384898A - 使用初始分布的快速、低存储器、一致哈希 - Google Patents
使用初始分布的快速、低存储器、一致哈希 Download PDFInfo
- Publication number
- CN112384898A CN112384898A CN201980046362.5A CN201980046362A CN112384898A CN 112384898 A CN112384898 A CN 112384898A CN 201980046362 A CN201980046362 A CN 201980046362A CN 112384898 A CN112384898 A CN 112384898A
- Authority
- CN
- China
- Prior art keywords
- resource
- label
- resources
- potential
- labels
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 38
- 238000009826 distribution Methods 0.000 title description 13
- 238000000034 method Methods 0.000 claims abstract description 84
- 238000003860 storage Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 abstract description 39
- 230000008569 process Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 13
- 230000003247 decreasing effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005315 distribution function Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101100352902 Dictyostelium discoideum canA gene Proteins 0.000 description 1
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 101150033714 mtcA1 gene Proteins 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5014—Reservation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本系统和方法的实施例可提供一致性哈希函数,该一致性哈希函数提供减少的存储器使用和复杂度、减少的计算复杂度、以及与当前技术相比必须改组的相对低数量的密钥。例如,在实施例中,一种用于控制计算资源的计算机实施的方法可包括存储潜在资源的标签的集合,所述潜在资源的标签的集合包括分配给实际资源的工作资源的多个标签和可用于分配的预留资源的多个标签,当对潜在资源的标签的集合中的一个标签的所述分配是对预留资源的所述标签中的一个标签的所述分配时,生成对潜在资源的所述标签的集合中的一个标签的初始分配,将所述请求重新指派到从潜在资源的标签的子集选择的资源的另一标签,以及重复所述重新分配,直到所述请求被分配到工作资源的标签。
Description
背景技术
本发明涉及用于使用与处理的初始分布一致的哈希技术来执行对象或处理任务的分布的技术。
与分布式处理相关的一个问题是在可用于存储和/或处理对象和任务的资源(桶(buckets))之间分配对象或处理任务(键)。常规系统可以使用常规哈希函数来分配密钥,如生成对象或任务的哈希,然后找到桶数的基数的模数,并且相应地进行分配。在这种情况下,如果桶被添加或移除,则必须重新分配所有或几乎所有密钥。
使用称为一致哈希函数的特殊哈希函数可大大减少当桶的数量改变时必须重新分配的密钥。例如,现有一致哈希函数可将键映射到一组桶。类似于常规哈希函数,密钥集(例如,web请求)可能非常大并且不是均匀分布的,而桶集(例如,web服务器的群体)可能是有限的。哈希函数可以确定性地以均匀的方式将密钥分布在桶之间。不同于常规哈希,现有的一致哈希最小化当桶集合改变时(例如,当添加或移除web服务器时)的映射改变(称为“重新混洗”)。现有的一致性哈希具有许多应用并且对于网络高速缓存、存储、内存中高速缓存、分布式哈希表等是基本的。
存在许多常规哈希函数和实施方式,例如现有一致哈希函数、现有集合一致哈希函数、现有跳跃一致哈希函数、现有哈希函数和现有基于置换的哈希函数。这些功能和实现方式各自具有优点和缺点。然而,典型的缺点可包括高存储器使用和复杂度、高计算复杂度、以及必须改组的相对高数量的密钥。
需要实现一致性哈希函数的技术,所述一致性哈希函数提供减少的存储器使用和复杂性、减少的计算复杂性以及与当前技术相比必须重新混洗的相对低数量的密钥。
发明内容
本系统和方法的实施例可提供一致性哈希函数,该一致性哈希函数提供减少的存储器使用和复杂度、减少的计算复杂度、以及与当前技术相比必须改组的相对低数量的密钥。
例如,在实施例中,一种用于控制计算资源的计算机实施的方法可包括存储潜在资源的标签的集合,所述潜在资源的标签的集合包括分配给实际资源的工作资源的多个标签和可用于分配的预留资源的多个标签,当对潜在资源的标签的集合中的一个标签的所述分配是对预留资源的所述标签中的一个标签的所述分配时,生成对潜在资源的所述标签的集合中的一个标签的初始分配,将所述请求重新指派到从潜在资源的标签的子集选择的资源的另一标签,以及重复所述重新分配,直到所述请求被分配到工作资源的标签。
在实施例中,该子集可包括工作资源的多个标签和由资源的当前分配的标签界定的预留资源的标签的一部分。可从潜在资源的标签的集合或潜在资源的标签子集随机选择资源的另一标签。所述方法可进一步包括通过递减指示潜在资源的标签的所存储的集合中的工作资源的最后标签的范围值以排除分配给所述资源的所移除的标签而从工作资源的所述标签移除分配给所述资源的标签来移除实际资源。所述方法可进一步包括:通过在移除之前存储潜在资源的标签的集合来从工作资源的标签移除分配给所述资源的标签来移除实际资源,其中在所述移除之前的工作资源的最后标记代替分配给所述移除的资源的所述标记,并且递减指示所述存储的潜在资源的标记的集合中的工作资源的最后标记的范围值以排除分配给所述移除的资源的所述标记。所述方法还可包括:通过在移除之前移动最后一个工作资源的标签以代替分配给被移除的资源的标签来从所述工作资源的标签移除分配给所述资源的标签,并且仅存储代替分配给被移除的资源的标签的所述资源的标签,并且递减指示所存储的潜在资源的标签的集合中的最后一个工作资源的标签的范围值来移除实际资源。所述方法可进一步包括通过撤销最后移除的资源的标签的移除并将撤销的标签分配给所添加的实际资源来添加实际资源。潜在资源的标签的集合可以包括针对潜在资源中的至少一些潜在资源的多个标签,并且针对每个潜在资源的多个标签包括给予潜在资源的权重。
在实施例中,一种用于控制计算资源的系统可以包括处理器、可由所述处理器访问的存储器,以及存储在所述存储器中并且可由所述处理器执行以执行存储潜在资源的标签的集合的计算机程序指令,所述潜在资源的标签的集合包括分配给实际资源的工作资源的多个标签和可用于分配的预留资源的多个标签,当对潜在资源的标签的集合中的一个标签的所述分配是对预留资源的所述标签中的一个标签的所述分配时,生成对潜在资源的所述标签的集合中的一个标签的初始分配,将所述请求重新指派到从潜在资源的标签的子集选择的资源的另一标签,以及重复所述重新分配,直到所述请求被分配到工作资源的标签。
在一个实施例中,一种用于控制计算资源的计算机程序产品可以包括非暂时性计算机可读存储装置,所述非暂时性计算机可读存储装置具有随其体现的程序指令,所述程序指令可由计算机执行以致使所述计算机执行一种方法,所述方法包括存储潜在资源的标签的集合,所述潜在资源的标签的集合包括分配给实际资源的工作资源的多个标签和可用于分配的预留资源的多个标签,当对潜在资源的标签的集合中的一个标签的所述分配是对预留资源的所述标签中的一个标签的所述分配时,生成对潜在资源的所述标签的集合中的一个标签的初始分配,将所述请求重新指派到从潜在资源的标签的子集选择的资源的另一标签,以及重复所述重新分配,直到所述请求被分配到工作资源的标签。
附图说明
通过参考附图,可以最好地理解本发明的细节(关于其结构和操作两者),在附图中相同的参考标号和标识指代相同的元件。
图1示出其中可实现所描述的实施例的示范性系统;
图2是本技术中所涉及的过程的实施例的示范性流程图;
图3是本技术中所涉及的存储技术的实施例的示范性图;
图4a是本技术中所涉及的过程的实施例的示范性图;
图4b是本技术中所涉及的过程的实施例的示范性图;
图4c是涉及本技术的过程的实施例的示例图;
图5是其中可以实现在此描述的实施例中涉及的过程的计算机系统的示范性框图。
具体实施方式
本系统和方法的实施例可提供一致性哈希函数,该一致性哈希函数提供减少的存储器使用和复杂度、减少的计算复杂度、以及与当前技术相比必须改组的相对低数量的密钥。
在实施方式中,根据一些简单的(通常不一致的)哈希函数,本技术可以从初始映射至‘假设的’较大的桶集合开始。这可以被称为锚分布函数(anchor distributionfunction)。初始锚分布可以通过任何哈希或任何分布来执行。在锚集合不够大且桶将被添加超出锚集合的情况下,则可利用哈希函数(例如,跳跃哈希函数或其一般化)。例如,可使用作为跳转一致哈希的方法的广泛泛化的一致哈希函数。在此实例中,可通过反复计算在重新映射(重新缓冲)密钥之前需要添加或移除多少桶来选择待映射的桶。通过从锚分布开始,计算复杂度与锚桶集和当前桶集之间的差相关,而不是与总桶数相关。这意味着更靠近锚集的桶集中的改变(诸如典型情况,其中添加服务器代替失败的服务器)可能不会添加到计算复杂度(事实上,这样的改变可能降低计算复杂度)。此外,不像跳跃一致性哈希法,可以允许任意(无序)移除和对桶集的添加。该示例的存储器要求在改变次数的数量级上,而计算复杂度几乎是恒定的。例如,对于移除锚集合的高达10%,预期迭代次数小于10/9,并且对于移除锚集合的高达50%,预期迭代次数小于2。对于有序改变的特殊情况,存储器使用可以是恒定的。
图1示出其中可实现本系统和方法的技术的系统100的示范性框图。在此实例中,系统100包含多个对象和/或任务102A-N、哈希函数104、多个密钥106A-N、对象/任务分配块108和多个资源110A-Z。对象和/或任务102A-N可包括可被映射、分配或分配给存储资源(桶)的多个计算对象,诸如数据文件、事务、可执行文件等。对象和/或任务102A-N可包括可被映射、分配或指派给处理资源的多个计算任务,诸如执行进程、要执行的处理等。资源110A到110Z可包含对象和/或任务102A到102N被映射、分配或指派到的多个存储和/或处理资源。例如,资源110A-Z可包括用于执行计算和/或存储的服务器、存储资源、网络资源等。本技术适用于任何类型的计算资源,诸如存储控制器、分布式高速缓存、web高速缓存、密钥值存储和嵌入式系统,诸如硬件路由器和交换机。尽管这些设备的架构可以变化,但是本技术可以有利地应用于这样的设备。哈希函数104可包括可为对象和/或任务102A-N生成哈希密钥106A-N的一个或多个哈希函数和过程。对象/任务分配块108可基于所产生的哈希密钥106A-N将对象和/或任务102A-N的映射、分配或指派分配到资源110A-Z。
图2中示出了本技术中所涉及的过程200的示范性数据流程图。在此实例中,过程以伪代码的形式展示。除了实现最小中断属性和平衡之外,实施一致哈希算法的本系统和方法的实施例可支持对工作桶集的动态和经常非结构化的改变。这可能由于诸如随机桶故障、诸如维护的标准主动操作、或者当根据一些给定策略放大和缩小系统时的非预期事件而发生。
本系统和方法的实施例可以利用若干组桶。一个这样的集合可以被称为“工作集合”,由“W”203表示,其包括在给定时间正在使用的桶的集合。另一集合可以被称为“锚集合”,其是大于初始使用的桶集合(初始工作集合W)的桶集合。锚集合可以由“A”201表示。此类实施例可提供对工作桶集W进行的快速且任意的改变,同时对锚集合大小显示很小的敏感性。另一个集合可以被称为“预留集合”,由“R”204表示。如所提到的,在任何时间,本系统和方法可以用比工作集大的桶集合A工作。R可以被定义为R=A\W;.
可在集合R内维持后进先出(LIFO)次序。因此,准许进入R的最后移除的桶是在桶添加时首先离开它。可以使用其他实施例,但是这个实施例可以提供有效的实现方式。在该实施例中,在桶添加时,系统返回到其先前状态,即,在最后桶移除之前的状态。这可以减少存储器使用并且提供良好的性能。
每一密钥可与锚集合中的路径(例如,锚集合的有序子集)相关联,其中所述路径中的最后一跳是所述密钥被准许进入的桶。该最后一跳是沿路径的第一工作桶。首先,对于每个密钥,该路径可以包括或可以不包括初始预留的桶,并且其在第一初始工作桶处终止。在201处,可以通过将每个键均匀地分布到锚集合A202的贮存区中的一个来进行键的初始分布。在205-207处,可将每一活密钥推到工作桶集合上。初始桶布置的实例在图3中示出。
在图2的210-212处示出用于移除活动桶的过程209。在此过程中,工作桶集W203中的最后一个桶(例如图3中所示的桶15)移动到预留桶集R204。在图2的215-217处示出用于添加活动桶的过程214。在此过程中,预留桶集R204中的第一桶(例如图3中所示的桶16)移动到工作桶集W203。
当添加214新的桶b时,即,从预留集移动到工作集时,包括b的一些关键路径现在缩短并且在b处较早终止。类似地,当桶b被移除209时,先前终止于b的每个密钥的路径现在被扩展,其中用于这样的路径的新的(和最后的)跳被均匀地(使用适当的哈希函数)从剩余的工作集中选择。
在图2的220-223处示出了用于确定密钥的锚定路径上的第一跳的过程219。应用在进入密钥上的初始哈希确定其在其锚定路径上的第一跳。此第一哈希可在锚集合上是均匀的,例如由初始化过程201产生。然而,可能出现输入密钥最初被哈希到预留桶中的情况。键可重复哈希到锚集合的严格递减的子集,直到找到活动桶为止。可以在初始情况下以及在桶已被动态移除(或添加)的情况下应用该过程。这是因为初始情况可视为初始储备集包括已经被移除的桶。注意,这些被排序移除;照此,不需要重新枚举并且很少有新的状态信息,仅当前长度。因为该过程在有序移除(即使与随机移除混合)的情况下可能如此存储器有效,所以它可能对锚集合A与工作集合W之间的差较不敏感。计算查找努力与A/W的日志有关,计算努力也可能不是非常敏感。因而,可使用大的锚集合来支持许多添加。同样,大的工作集可被用于支持大量的后端服务器/资源或具有权重的后端服务器/资源,如下所述。
在这种情况下,可使用处理219。例如,当在运行时移除桶时,可以通过仅将映射到移除的桶的那些键重新映射到另一桶来保持一致性。在图3中,密钥可以使用例如在过程219的220处的哈希函数“24(锚集合202的大小)*random(随机)(seed(种子)=k)=21”来获得到桶21 301的初始哈希。由于桶21 301不在工作集W203中,例如,因为其被移除,所以在221-222处,可以使用例如在222处的哈希函数“21(来自先前迭代的桶)*r.next(下一个)()=16”来执行哈希的另一次迭代。该迭代产生桶16 302,其仍然不在工作集W203中,例如,因为它被移除。在221-222处,可以使用16(来自先前迭代的桶)*r.next=11执行另一迭代。该迭代产生工作集W203中的桶11 303。一旦选择了工作桶,迭代就停止。因此,在223处,在所分配的桶处返回桶11 303。
可以通过针对越来越小的集合迭代地选择桶并且仅当桶被移除(“路径”)时保持一致性。图4a中示出了保持一致性的处理的实施例的示例400。在这个实例中,锚集合A={1,2,…,7}和初始工作集合W={1,2,…,5}。图4a中所示的过程涉及保存这些集合并且涉及枚举它们以便于随机选择。初始(“自然”)枚举在行402中示出。本示例中的初始实现每次保存整个集合(行),但仍最小化重新枚举。当在运行时移除桶时,可以通过仅将映射到移除的桶的那些键重新映射到另一桶来保持一致性。例如,当在行402中桶7被移除(排序移除)时,可以保存新的行404。由于桶7被移除并且剩余的桶未改变,所以不需要重新枚举。当无序或随机移除发生时,重新枚举可能是必要的。例如,在行408中,桶2被移除(例如,由于故障)。仅桶5需要被重新枚举,因为其先前的枚举“5”大于剩余的集合。其新枚举是“2”,意味着如果行408上的随机选择选择项目#2,那么将使用桶5。在这个实例中,示出了桶7、6、2、4、然后5的连续移除,其中在初始化期间移除桶6和7。在该示例中,7、6和4的移除是有序的移除,而2和5的移除是无序的移除。
在图4b中示出了保持一致性的处理的实施例的示例450。在此实施例中,当对移除排序时,不需要将桶的新状态复制到新行,而是可以在桶的范围(最后一个桶或桶的数量)递减的情况下使用相同的行。因此,可维持行,其中最后一个工作桶由范围信息指示。例如,如图4b中所示,在初始化时,如果通过递减值次序准许预留桶进入,那么所有这些桶可以指向具有对应递减范围的第一行452。
如果移除的桶不是由先前移除的桶观察到的最后一个桶,则桶移除是无序的。当这样的移除发生时,可以创建新的行,其中前一行的最后条目可以被分配给被移除的桶的位置。例如,在管线452中,可以移除勺斗2。可以创建新线454,其中行452中的最后一个工作桶(桶5)被分配给由桶2空出的位置,并且工作桶范围可以递减。如在图4a中,仅存储桶5需要被重新枚举,因为其先前的枚举“5”大于剩余的集合。其新枚举是“2”,意味着如果行454上的随机选择选择物品#2,那么将使用桶5。在这个实例中,示出了桶7、6、2、4、然后5的连续移除,其中在初始化期间移除桶6和7。在该示例中,7、6和4的移除是有序的移除,而2和5的移除是无序的移除。
通过利用有序移除,如图4b所示,尤其在初始化时(例如,利用大的预留集),或者当在运行时缩放系统时(例如,当有意移除服务器/资源时),可以按顺序移除它们,可以减少存储器使用。
在图4c中示出了保持一致性的处理的实施例的示例470。在此实施例中,当对移除排序时,不需要将桶的新状态复制到新行,而是可以在桶的范围(最后一个桶或桶的数量)递减的情况下使用相同的行。因此,可维持行,其中最后一个工作桶由范围信息指示。例如,如图4c中所示,在初始化时,如果通过递减的值次序准许预留桶进入,那么所有这些桶可以指向具有对应递减范围473的第一行472。对于无序移除,通过仅保存/复制从其初始枚举改变的桶(例如图4c中的桶5和3),可以更进一步减少存储器使用。
这种技术在保存状态以处理随机故障的方式上可以是非常有效的。具体地,如果最后的服务器/资源被移除,诸如由于公共缩小事件和从锚集合的初始化“移除”而排序移除,则不必保存任何新的状态(除了移除本身的身份之外)。对于每个随机或无序故障,仅需要复制几个条目。最初,可以通过桶的ID来枚举桶。在桶失败时,可以仅针对最小的桶集合改变枚举,这可以最小化重新混洗。由于仅随机失败需要枚举的任何改变,并且至多需要一个改变,因此保存为当前状态的枚举改变的总数可少于随机失败的数量。进一步,状态改变的数量也可以少于随机故障的总数。随机移除通常不是计划的,并且是固定的和重新添加的,或者使用替换服务器/资源。因为可以通过“忘记”移除来添加服务器/资源,所以状态涉及随机移除的“净”数量而不是总数量。
例如,在图4c中,当从行472移除桶2时,可以创建新线474,其中可以将行472中的最后一个工作桶(桶5)分配给由桶2腾出的位置,并且可以递减工作桶范围。仅桶5需要被重新枚举,因为其先前的枚举“5”大于剩余的集合。同样,仅需要在行474中存储桶5,因为可以从行472获得剩余的桶分配。其新的枚举是“2”,意味着如果在行454上的随机选择选择项目#2,那么将使用存储桶5。在这个实例中,示出了桶7、6、2、4、然后5的连续移除,其中桶6和7在初始化期间被移除。在该示例中,7、6和4的移除是有序的移除,而2和5的移除是无序的移除。同样,当移除桶5时,可以创建新线474,其中可以将行472中的最后一个工作桶(桶3)分配给由桶5腾出的位置,并且可以递减工作桶范围。
可以通过基本上撤销移除操作并将桶(标签)从先前移除的资源重新分配到新添加的资源来添加资源。虽然移除的标签(桶)是“随机的”——由于故障可能需要移除任何资源,但添加的资源标签不需要是随机的,该过程可以选择任何未使用的标签。应注意,桶不是后端服务器或其他资源。相反,(一致的)哈希将密钥映射到桶,并且然后将桶映射到服务器/资源。这意味着桶标识是完全可控制的。
例如,在图4a中,如果添加桶,则可以使用最后一个工作桶之后的预留桶,并且简单地通过增加工作桶范围来将预留桶移动到工作集。因此,在图4a中的线406处,如果桶被添加,则最后移除的桶(桶6416)可被添加回到工作集中。同样,在图4b中的行452处,可以通过更新行452的范围信息以包括桶6来将桶6添加回到工作集中。
作为另一实例,图4a中的线412已由若干有序和无序移除产生。可通过使用最后一个工作桶之后的预留桶通过递增工作桶范围来将桶添加到行412。在这种情况下,可以选择尚未使用的任何桶作为要添加到工作桶范围的桶。同样,通过递增工作桶范围,桶可以被添加到图4b的行456和图4c的行476。在这些实例中,可选择尚未使用的任何桶作为待添加到工作桶范围的桶。
在本系统和方法中,由于服务器/资源的数量不改变太多(不管做出了多少添加/移除动作),最终状态将非常接近初始状态。此外,不必预先准备随机移除。仅当发生移除时并且仅当实际挑选移除的存储桶时对移除的额外计算,尽管在这种情况下可以在准备中复制状态。添加服务器/资源可减少计算努力且移除所保存的状态。
由于在没有过多计算或存储器开销的情况下预留和工作桶的数量可能很大,所以在实施例中,可以向每个服务器或其他资源指派多于一个桶。进一步,由于各种服务器或其他资源的计算能力和/或存储容量可以不同,所以分配给每个服务器或其他资源的桶的数量也可以不同。这可提供按需对每个服务器或其他资源的分布进行加权的能力。进一步,由于桶的总数可能非常大,所以加权粒度可能非常精细。例如,平均服务器或其他资源可以分配给10个存储桶,而更强大的服务器/资源可以分配给20个存储桶并且不那么强大的服务器/资源可以分配给5个存储桶。如果需要更精细的粒度,那么可分别将相同的服务器/资源分配给100、200和50个桶。可根据需要调整实际指派、加权和粒度。
图5中示出了计算机系统502的示范性框图,其中可以实现本文所描述的实施例中涉及的过程。计算机系统502可使用一个或多个编程的通用计算机系统(诸如嵌入式处理器、片上系统、个人计算机、工作站、服务器系统和小型计算机或大型计算机)或在分布式联网计算环境中实现。计算机系统502可以包括一个或多个处理器(CPU)502A-502N、输入/输出电路504、网络适配器506和存储器508。CPU502A-502N执行程序指令以便执行本通信系统和方法的功能。通常,CPU502A-502N是一个或多个微处理器,诸如处理器。图5示出了其中计算机系统502被实现为单个多处理器计算机系统的实施例,其中多个处理器502A-502N共享系统资源,诸如存储器508、输入/输出电路504和网络适配器506。然而,本通信系统和方法还包括其中计算机系统502被实现为多个联网的计算机系统的实施例,所述多个联网的计算机系统可以是单处理器计算机系统、多处理器计算机系统或者它们的混合。
本技术适用于任何类型的计算资源,诸如存储控制器、分布式高速缓存、web高速缓存、密钥值存储和嵌入式系统,诸如硬件路由器和交换机。尽管这些设备的架构可以变化,但是本技术可以有利地应用于这样的设备。
输入/输出电路504提供向计算机系统502输入数据或从计算机系统502输出数据的能力。例如,输入/输出电路可包括输入设备(诸如键盘、鼠标、触摸板、跟踪球、扫描仪、模数转换器等)、输出设备(诸如视频适配器、监视器、打印机等)和输入/输出设备(诸如调制解调器等)。网络适配器506将设备500与网络510对接。网络510可以是任何公共或专有LAN或WAN,包括但不限于互联网。
存储器508存储由CPU502执行以执行计算机系统502的功能的程序指令和由CPU502使用和处理以执行计算机系统502的功能的数据。存储器508可包含(例如)电子存储器装置,例如随机存取存储器(RAM),只读存储器(ROM)、可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM),闪存等,以及诸如磁盘驱动器、磁带驱动器、光盘驱动器的机电存储器,可使用集成驱动电子装置(IDE)接口或其变型或增强接口的IDE接口等,诸如增强型IDE(EIDE)或超直接存储器访问(UDMA)或基于小型计算机系统接口(SCSI)的接口,或其变形或增强,诸如快速SCSI、宽SCSI、快速和宽SCSI,串行高级技术附件(SATA)或其变形或增强,或光纤通道仲裁环路(FC-AL)接口。
存储器508的内容可根据计算机系统502被编程以执行的功能而变化。在图5所示的示例中,示出了表示用于上述过程的实施例的例程和数据的示范性存储器内容。然而,本领域技术人员将认识到,基于公知的工程考虑,这些例程以及与这些例程相关的存储器内容可以不包括在一个系统或设备上,而是可以分布在多个系统或设备中。本通信系统和方法可以包括任何和所有这样的布置。
在实施例中,图5中所示的软件的至少一部分可在当前领导服务器上实现。同样,在实施例中,图5中所示的软件的至少一部分可在除当前领导者服务器之外的计算机系统上实现。
在图5所示的实例中,存储器508可包含哈希函数例程512、分布例程514、密钥数据516、分布数据518和操作系统520。哈希函数例程512可包含用以产生哈希密钥的软件例程,所述哈希密钥可存储为待分发的对象和/或任务的密钥数据516。分配例程514可包括用于例如根据图2和3中所示的过程在资源之间分配对象和/或任务的软件例程。分布数据518可包括由分布例程514使用的数据,诸如上文关于图2和3描述的数据。操作系统520可以提供总体系统功能。
如图5所示,本通信系统和方法可以包括在提供多处理器、多任务、多进程和/或多线程计算的一个或多个系统上的实现方式,以及在仅提供单处理器、单线程计算的系统上的实现方式。多处理器计算涉及使用多于一个处理器来执行计算。多任务计算涉及使用多于一个操作系统任务来执行计算。任务是指正在执行的程序和操作系统使用的簿记信息的组合的操作系统概念。每当执行程序时,操作系统为其创建新任务。任务类似于程序的信封,因为其用任务号识别程序且将其他簿记信息附加到程序。许多操作系统(包括Linux、和)能够同时运行许多任务并且被称为多任务操作系统。多任务是操作系统同时执行多于一个可执行文件的能力。每个可执行文件在其自己的地址空间中运行,这意味着可执行文件无法共享它们的存储器中的任何存储器。这具有优势,因为任何程序都不可能损坏在系统上运行的任何其他程序的执行。然而,程序除了通过操作系统(或通过读取存储在文件系统上的文件)以外没有办法交换任何信息。多进程计算类似于多任务计算,因为术语任务和进程常常可互换地使用,尽管一些操作系统在这两者之间进行区分。
本发明可以是任何可能的集成技术细节水平的系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储媒体(或媒体),所述计算机可读程序指令用于致使处理器执行本发明的方面。计算机可读存储介质可以是可以预留和存储指令以供指令执行设备使用的有形设备。
计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片)或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机、和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,集成电路的配置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的Smalltalk、C++等编程语言,以及过程式编程语言,如“C”编程语言或类似的编程语言。计算机可读程序指令可完全在用户”的计算机上执行、部分在用户”的计算机上执行、作为独立软件包执行、部分在用户”的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的方面。
本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
尽管已经描述了本发明的特定实施例,但是本领域的技术人员将理解,存在与所描述的实施例等同的其他实施例。因此,应当理解,本发明不受具体说明的实施例的限制,而仅受所附权利要求书的范围的限制。
Claims (24)
1.一种用于控制计算资源的计算机实施方法,其包括:
存储潜在资源的标签的集合,所述潜在资源的标签的集合包括分配给实际资源的工作资源的多个标签和可用于分配的预留资源的多个标签;
生成对潜在资源的标签的集合中的一个的初始指派;
当对潜在资源的标签的集合中的一者的所述指派是对所预留资源的所述标签中的一者时,将所述请求重新指派到从潜在资源的所述标签的子集选择的资源的另一标签;并且
重复所述重新分配,直到所述请求被分配到工作资源的标签。
2.如权利要求1所述的方法,其中该子集包括工作资源的该多个标签以及由资源的该当前指派的标签界定的预留资源的该标签的一部分。
3.如权利要求2所述的方法,其中资源的该另一标签是从潜在资源的该标签的集合或潜在资源的该标签的该子集随机选择的。
4.如权利要求1所述的方法,其进一步包括通过递减指示该所存储的潜在资源的标签的集合中的工作资源的最后标签的范围值以排除分配给该资源的该移除的标签而从该工作资源的该标签移除分配给该资源的标签来移除实际资源。
5.如权利要求1所述的方法,其进一步包括通过以下操作通过从该工作资源的该标签移除分配给该资源的标签来移除实际资源:
存储所述移除之前的潜在资源的标签的集合,其中所述移除之前的工作资源的最后标签代替分配给所述移除的资源的所述标签;并且
递减指示所述存储的潜在资源的标签的集合中的工作资源的最后标签的范围值以排除分配给所述移除的资源的所述标签。
6.如权利要求1所述的方法,其进一步包括通过以下操作通过从该工作资源的该标签移除分配给该资源的标签来移除实际资源:
移动所述移除之前的最后一个工作资源的标签以代替分配给所述移除的资源的所述标签,并且仅存储代替分配给所述移除的资源的所述标签的所述资源的所述标签;并且
递减指示所述所存储的潜在资源的标签的集合中的最后工作资源的标签的范围值。
7.如权利要求1所述的方法,进一步包括通过撤销该最后移除的资源的该标签的移除并且将该撤销的标签分配给该添加的实际资源来添加实际资源。
8.如权利要求1所述的方法,其中该潜在资源的标签的集合包括用于该潜在资源中的至少一些潜在资源的多个标签,并且用于每一潜在资源的标签的数目包括给予该潜在资源的权重。
9.一种用于控制计算资源的系统,所述系统包括处理器、可由所述处理器存取的存储器以及存储在所述存储器中且可由所述处理器执行以执行以下操作的计算机程序指令:
存储潜在资源的标签的集合,所述潜在资源的标签的集合包括分配给实际资源的工作资源的多个标签和可用于分配的预留资源的多个标签;
生成对潜在资源的标签的集合中的一个的初始指派;
当对潜在资源的标签的集合中的一者的所述指派是对所预留资源的所述标签中的一者时,将所述请求重新指派到从潜在资源的所述标签的子集选择的资源的另一标签;并且
重复所述重新分配,直到所述请求被分配到工作资源的标签。
10.如权利要求9所述的系统,其中该子集包括工作资源的该多个标签以及由资源的该当前指派的标签界定的预留资源的该标签的一部分。
11.如权利要求10所述的系统,其中从该潜在资源的标签的集合或该潜在资源的标签子集随机选择该资源的另一标签。
12.如权利要求9所述的系统,进一步包括通过递减指示该所存储的潜在资源的标签的集合中的工作资源的最后标签的范围值以排除分配给该资源的该移除的标签而从该工作资源的该标签移除分配给该资源的标签来移除实际资源。
13.如权利要求9所述的系统,进一步包括通过以下操作通过从工作资源的标签中移除分配给该资源的标签来移除实际资源:
存储所述移除之前的潜在资源的标签的集合,其中所述移除之前的工作资源的最后标签代替分配给所述移除的资源的所述标签;并且
递减指示所述存储的潜在资源的标签的集合中的工作资源的最后标签的范围值以排除分配给所述移除的资源的所述标签。
14.如权利要求9所述的系统,进一步包括通过以下操作通过从工作资源的标签中移除分配给该资源的标签来移除实际资源:
移动所述移除之前的最后一个工作资源的标签以代替分配给所述移除的资源的所述标签,并且仅存储代替分配给所述移除的资源的所述标签的所述资源的所述标签;并且
递减指示所述所存储的潜在资源的标签的集合中的最后工作资源的标签的范围值。
15.如权利要求9所述的系统,进一步包括通过撤销该最后移除的资源的该标签的移除并且将该撤销的标签分配给该添加的实际资源来添加实际资源。
16.如权利要求9所述的系统,其中该潜在资源的标签的集合包括用于该潜在资源中的至少一些潜在资源的多个标签,并且用于每一潜在资源的标签的数目包括给予该潜在资源的权重。
17.一种用于控制计算资源的计算机程序产品,所述计算机程序产品包括非暂时性计算机可读存储装置,所述非暂时性计算机可读存储装置具有随其体现的程序指令,所述程序指令可由计算机执行以致使所述计算机执行方法,所述方法包括:
存储潜在资源的标签的集合,所述潜在资源的标签的集合包括分配给实际资源的工作资源的多个标签和可用于分配的预留资源的多个标签;
生成对潜在资源的标签的集合中的一个的初始指派;
当对潜在资源的标签的集合中的一者的所述指派是对所预留资源的所述标签中的一者时,将所述请求重新指派到从潜在资源的所述标签的子集选择的资源的另一标签;并且
重复所述重新分配,直到所述请求被分配到工作资源的标签。
18.如权利要求17所述的计算机程序产品,其中该子集包括工作资源的该多个标签以及由资源的该当前指派的标签界定的预留资源的该标签的一部分。
19.如权利要求18所述的计算机程序产品,其中资源的该另一标签是从潜在资源的该标签的集合或潜在资源的该标签的该子集随机选择的。
20.如权利要求17所述的计算机程序产品,进一步包括通过递减指示该所存储的潜在资源的标签的集合中的工作资源的最后标签的范围值以排除分配给该资源的该移除的标签而从该工作资源的该标签移除分配给该资源的标签来移除实际资源。
21.如权利要求17所述的计算机程序产品,进一步包括通过以下操作通过从工作资源的该标签移除分配给该资源的标签来移除实际资源:
存储所述移除之前的潜在资源的标签的集合,其中所述移除之前的工作资源的最后标签代替分配给所述移除的资源的所述标签;并且
递减指示所述存储的潜在资源的标签的集合中的工作资源的最后标签的范围值以排除分配给所述移除的资源的所述标签。
22.如权利要求17所述的计算机程序产品,进一步包括通过以下操作通过从工作资源的该标签移除分配给该资源的标签来移除实际资源:
移动所述移除之前的最后一个工作资源的标签以代替分配给所述移除的资源的所述标签,并且仅存储代替分配给所述移除的资源的所述标签的所述资源的所述标签;并且
递减指示所述所存储的潜在资源的标签的集合中的最后工作资源的标签的范围值。
23.如权利要求17所述的计算机程序产品,进一步包括通过撤销该最后移除的资源的该标签的移除且将该撤销的标签分配给该添加的实际资源来添加实际资源。
24.如权利要求17的计算机程序产品,其中该潜在资源的标签的集合包括用于该潜在资源中的至少一些潜在资源的多个标签,并且用于每一潜在资源的标签的数目包括给予该潜在资源的权重。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/038,201 US10540207B1 (en) | 2018-07-18 | 2018-07-18 | Fast, low memory, consistent hash using an initial distribution |
US16/038,201 | 2018-07-18 | ||
PCT/IB2019/056013 WO2020016738A1 (en) | 2018-07-18 | 2019-07-15 | Fast, low memory, consistent hash using an initial distribution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112384898A true CN112384898A (zh) | 2021-02-19 |
CN112384898B CN112384898B (zh) | 2024-07-12 |
Family
ID=69161900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980046362.5A Active CN112384898B (zh) | 2018-07-18 | 2019-07-15 | 使用初始分布的快速、低存储器、一致哈希 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10540207B1 (zh) |
JP (1) | JP7219330B2 (zh) |
CN (1) | CN112384898B (zh) |
GB (1) | GB2589264B (zh) |
WO (1) | WO2020016738A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3094520B1 (fr) * | 2019-03-25 | 2021-10-22 | St Microelectronics Rousset | Clé de chiffrement et/ou de déchiffrement |
CN112486860B (zh) * | 2019-09-11 | 2024-09-03 | 伊姆西Ip控股有限责任公司 | 管理存储系统的地址映射的方法、设备和计算机程序产品 |
US11375013B2 (en) * | 2020-09-25 | 2022-06-28 | Microsoft Technology Licensing, Llc | Deterministic mapping and uniform routing of items to physical resources using hash values |
US11616721B2 (en) | 2020-11-24 | 2023-03-28 | International Business Machines Corporation | In-packet version tagging utilizing a perimeter NAT |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090172139A1 (en) * | 2007-12-26 | 2009-07-02 | Kai Chiu Wong | Balanced consistent hashing for distributed resource management |
US20100293270A1 (en) * | 2009-05-18 | 2010-11-18 | International Business Machines Corporation | Use Tag Clouds to Visualize Components Related to an Event |
US20110126281A1 (en) * | 2009-11-20 | 2011-05-26 | Nir Ben-Zvi | Controlling Resource Access Based on Resource Properties |
US20150215229A1 (en) * | 2014-01-29 | 2015-07-30 | Microsoft Corporation | Resource affinity in a dynamic resource pool |
US20150350035A1 (en) * | 2014-05-27 | 2015-12-03 | International Business Machines Corporation | Managing information technology resources using metadata tags |
US20150379009A1 (en) * | 2014-06-25 | 2015-12-31 | Cohesity, Inc. | Distributed key-value store |
US20180067865A1 (en) * | 2016-09-08 | 2018-03-08 | The Johns Hopkins University | Apparatus and method for computational workflow management |
US9923798B1 (en) * | 2012-06-28 | 2018-03-20 | Juniper Networks, Inc. | Dynamic load balancing of network traffic on a multi-path label switched path using resource reservation protocol with traffic engineering |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19822543A1 (de) | 1998-05-20 | 1999-11-25 | Alcatel Sa | Verfahren zum Zuteilen von Aufträgen, Datenverarbeitssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium |
US6144983A (en) * | 1998-06-09 | 2000-11-07 | Oracle Corporation | Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system |
US6363396B1 (en) | 1998-12-21 | 2002-03-26 | Oracle Corporation | Object hashing with incremental changes |
US8266116B2 (en) * | 2007-03-12 | 2012-09-11 | Broadcom Corporation | Method and apparatus for dual-hashing tables |
US8032637B2 (en) * | 2007-12-26 | 2011-10-04 | Symantec Corporation | Balanced consistent hashing for distributed resource management |
US9037715B2 (en) * | 2008-06-10 | 2015-05-19 | International Business Machines Corporation | Method for semantic resource selection |
US8060792B2 (en) * | 2009-03-31 | 2011-11-15 | Amazon Technologies, Inc. | Monitoring and automated recovery of data instances |
BRPI1016200B1 (pt) | 2009-04-16 | 2020-10-20 | Tibco Software Inc | método para adicionar um nó a uma coleção de nós computacionais e método para a remoção de um nó de saída de uma coleção de nós de computação |
US8321385B2 (en) * | 2010-03-12 | 2012-11-27 | Lsi Corporation | Hash processing in a network communications processor architecture |
US8438574B1 (en) * | 2009-08-14 | 2013-05-07 | Translattice, Inc. | Generating monotone hash preferences |
US20110154355A1 (en) * | 2009-12-22 | 2011-06-23 | Siemens Aktiengesellschaft | Method and system for resource allocation for the electronic preprocessing of digital medical image data |
US8793286B2 (en) * | 2010-12-09 | 2014-07-29 | International Business Machines Corporation | Hierarchical multi-tenancy management of system resources in resource groups |
US8854952B2 (en) * | 2011-12-22 | 2014-10-07 | International Business Machines Corporation | Reallocating secondary destinations on a network switch |
US9628438B2 (en) | 2012-04-06 | 2017-04-18 | Exablox | Consistent ring namespaces facilitating data storage and organization in network infrastructures |
JP2014044677A (ja) * | 2012-08-28 | 2014-03-13 | Fujitsu Ltd | 送信制御プログラム、通信ノード、および送信制御方法 |
US8918372B1 (en) * | 2012-09-19 | 2014-12-23 | Emc Corporation | Content-aware distributed deduplicating storage system based on consistent hashing |
US9411558B2 (en) * | 2012-10-20 | 2016-08-09 | Luke Hutchison | Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing |
US9311359B2 (en) * | 2013-01-30 | 2016-04-12 | International Business Machines Corporation | Join operation partitioning |
US9317548B2 (en) * | 2013-01-30 | 2016-04-19 | International Business Machines Corporation | Reducing collisions within a hash table |
US10038550B2 (en) * | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
US9729444B2 (en) | 2014-07-25 | 2017-08-08 | Cisco Technology, Inc. | High speed packet processing using a distributed hash table |
US9672248B2 (en) * | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
JP6374841B2 (ja) | 2015-08-03 | 2018-08-15 | 日本電信電話株式会社 | 仮想マシン配置装置および仮想マシン配置方法 |
US10268521B2 (en) * | 2016-01-22 | 2019-04-23 | Samsung Electronics Co., Ltd. | Electronic system with data exchange mechanism and method of operation thereof |
JP6594271B2 (ja) | 2016-08-26 | 2019-10-23 | 日本電信電話株式会社 | 分散装置及び分散方法 |
US10360065B2 (en) * | 2016-09-08 | 2019-07-23 | International Business Machines Corporation | Smart reduce task scheduler |
US10346315B2 (en) * | 2017-05-26 | 2019-07-09 | Oracle International Corporation | Latchless, non-blocking dynamically resizable segmented hash index |
US10541909B2 (en) * | 2017-06-23 | 2020-01-21 | International Business Machines Corporation | Distributed affinity tracking for network connections |
-
2018
- 2018-07-18 US US16/038,201 patent/US10540207B1/en active Active
-
2019
- 2019-07-15 GB GB2100045.0A patent/GB2589264B/en active Active
- 2019-07-15 JP JP2021500456A patent/JP7219330B2/ja active Active
- 2019-07-15 CN CN201980046362.5A patent/CN112384898B/zh active Active
- 2019-07-15 WO PCT/IB2019/056013 patent/WO2020016738A1/en active Application Filing
- 2019-11-06 US US16/675,268 patent/US11150953B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090172139A1 (en) * | 2007-12-26 | 2009-07-02 | Kai Chiu Wong | Balanced consistent hashing for distributed resource management |
US20100293270A1 (en) * | 2009-05-18 | 2010-11-18 | International Business Machines Corporation | Use Tag Clouds to Visualize Components Related to an Event |
US20110126281A1 (en) * | 2009-11-20 | 2011-05-26 | Nir Ben-Zvi | Controlling Resource Access Based on Resource Properties |
US9923798B1 (en) * | 2012-06-28 | 2018-03-20 | Juniper Networks, Inc. | Dynamic load balancing of network traffic on a multi-path label switched path using resource reservation protocol with traffic engineering |
US20150215229A1 (en) * | 2014-01-29 | 2015-07-30 | Microsoft Corporation | Resource affinity in a dynamic resource pool |
US20150350035A1 (en) * | 2014-05-27 | 2015-12-03 | International Business Machines Corporation | Managing information technology resources using metadata tags |
US20150379009A1 (en) * | 2014-06-25 | 2015-12-31 | Cohesity, Inc. | Distributed key-value store |
US20180067865A1 (en) * | 2016-09-08 | 2018-03-08 | The Johns Hopkins University | Apparatus and method for computational workflow management |
Also Published As
Publication number | Publication date |
---|---|
GB202100045D0 (en) | 2021-02-17 |
US11150953B2 (en) | 2021-10-19 |
GB2589264B (en) | 2021-11-03 |
WO2020016738A1 (en) | 2020-01-23 |
US20200073719A1 (en) | 2020-03-05 |
JP7219330B2 (ja) | 2023-02-07 |
US10540207B1 (en) | 2020-01-21 |
GB2589264A (en) | 2021-05-26 |
US20200026567A1 (en) | 2020-01-23 |
JP2021530060A (ja) | 2021-11-04 |
CN112384898B (zh) | 2024-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112384898B (zh) | 使用初始分布的快速、低存储器、一致哈希 | |
US11106579B2 (en) | System and method to manage and share managed runtime memory for java virtual machine | |
RU2569805C2 (ru) | Виртуальная архитектура неоднородной памяти для виртуальных машин | |
US10628347B2 (en) | Deallocation of memory buffer in multiprocessor systems | |
US11150949B2 (en) | Resource release method, resource allocation method, devices, and computer program products | |
US20050177821A1 (en) | Compiler, dynamic compiler, and replay compiler | |
US8539192B2 (en) | Execution of dataflow jobs | |
TWI539280B (zh) | 用於分析未經特定設計以提供記憶體分配資訊之應用程式及擷取記憶體分配資訊的方法、及其電腦系統和電腦可讀儲存媒體 | |
US9286199B2 (en) | Modifying memory space allocation for inactive tasks | |
US9501285B2 (en) | Register allocation to threads | |
US10831400B2 (en) | Method and apparatus to represent activation frame for pause-less garbage collection | |
US20200379646A1 (en) | System and method for on-demand recovery points | |
US11740947B2 (en) | Resilient adaptive biased locking in multi-thread concurrent program execution | |
US7293051B1 (en) | Collection-set selection using a small priority queue | |
KR101640231B1 (ko) | 자동 분산병렬 처리 하둡 시스템의 지원을 위한 클라우드 구동 방법 | |
US20100094861A1 (en) | System and method for application session tracking | |
US20090187911A1 (en) | Computer device with reserved memory for priority applications | |
JP2018190355A (ja) | リソース管理方法 | |
US20230147878A1 (en) | Implementing heterogeneous memory within a programming environment | |
US20210011848A1 (en) | Data processing for allocating memory to application containers | |
Kotselidis et al. | Efficient compilation and execution of JVM-based data processing frameworks on heterogeneous co-processors | |
US20220164282A1 (en) | Reducing load balancing work stealing | |
US11080182B2 (en) | Object load introspection using guarded storage | |
US20230075114A1 (en) | Resource allocation in cloud computing systems | |
US10412193B2 (en) | Usage-aware standby service in a grid environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |