CN104793926B - 一种分布式系统中资源配置方法及系统 - Google Patents
一种分布式系统中资源配置方法及系统 Download PDFInfo
- Publication number
- CN104793926B CN104793926B CN201410154901.6A CN201410154901A CN104793926B CN 104793926 B CN104793926 B CN 104793926B CN 201410154901 A CN201410154901 A CN 201410154901A CN 104793926 B CN104793926 B CN 104793926B
- Authority
- CN
- China
- Prior art keywords
- node
- resource
- server
- node server
- stock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本公开示出了一种分布式系统中资源配置方法,所述方法包括:从分布式系统中获取各个节点;对获取的系统中的所有节点依次编号,其中若系统中包括节点数为n个,依次编号为0到n‑1;将所有获取的节点按照各个节点对应的编号顺序排列为环状,将所述节点的资源编号除n得到的商作为其对应节点的获取资源量的对应的节点编号,所述资源编号为对应该系统中各个节点待分配处理的所有资源对应的标识;当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号。
Description
技术领域
本公开涉及互联网终端领域,特别涉及一种分布式系统中资源配置方法及系统。
背景技术
分布式系统中,如何将资源分散定位到系统中的各节点,是其核心问题之一。目前的各种主流解决方案,都是基于不同的hash算法,在各资源与各节点之间形成映射,其不同之处,主要在于对资源分布均匀性、扩容支持等问题的处理,我们选取直接取余算法和Dynamo算法作为背景方案的两个典型代表。
关于直接取余算法
直接取余算法是最简单的hash分布算法之一,其基本思路是将分布式系统中的节点进行连续编号,将节点数作为直接取余算法中的除数因子,从而形成多个资源与多个节点的稳定映射关系。该算法方案中,系统各节点如图1所示,被编号形成一个线性序列。通过将资源编号对节点总数n取余,得到该资源对应的节点编号。该方案在系统初始阶段,资源分布是均匀的,但在扩容时,由于系统节点总数从n增加到n+1,每个节点有大约n/(n+1)的资源需要转移到相邻节点,而对整个系统来说,几乎所有的资源都需要移动,从而造成很大的系统负担。
关于Dynamo算法
Dynamo算法源于亚马逊的研究论文,其基本思路是,在给定的值空间中,将各节点与某一给定值绑定,然后将所有节点排列成环状。对资源应用稳定不变的hash算法及参数,然后取邻近的节点作为其资源的存放节点。在该算法方案中,系统各节点如图2所示,被编号形成一个环状序列,每个节点对应一个资源编号,并负责接纳后序所有编号的资源,直到下一个节点对应的编号。。
图2中,编号为0的节点,将负责存放编号0-99的资源,编号为100的节点负责存放编号100-299的资源,而编号为300的节点则负责存放所有编号在300以上的资源。
该系统在扩容时,将增加一个节点到环中,例如,插入一个节点在编号100与编号300的节点之间,并将其编号设定为200,则扩容过程将导致编号为100的节点上的部分资源需要转移到新的节点上,而其系统中的其它节点无需变动,扩容过程需要转移的资源较少。但会因为扩容过程造成节点分布不均匀。相比较而言,背景1所述方案中,各节点的分布是均匀的。
发明内容
为克服相关技术中存在的问题,本公开提供一种分布式系统中资源配置方法及系统。所述技术方案如下:
根据本公开实施例的第一方面,提供了一种分布式系统中资源配置方法,所述方法包括:
从分布式系统中获取各个节点;
对获取的系统中的所有节点依次编号,其中若系统中包括节点数为n个,依次编号为0到n-1;
将所有获取的节点按照各个节点对应的编号顺序排列为环状,将所述节点的资源编号除n得到的商作为其对应节点的获取资源量的对应的节点编号,所述资源编号为对应该系统中各个节点待分配处理的所有资源对应的标识;
当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号。
作为优选的,所述当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号,包括:
当资源已分配的所对应节点发生变更时,若设增加的节点的编号为k,则对应的增加后的各个节点编号应该为0、1、2......k、k+1、......n-1+k;
则将资源转移到新的节点上,转移到新的节点k上的资源量为1/(n+1)。
作为优选的,所述当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号,包括:
当n远大于1时,则系统中平均每个节点需要接收的资源量为1/(n*(n+1)),平均每个节点需要移走的资源量是(2/n*(n+1))个。
本发明人实施例另一方便还提供一种分布式系统中资源配置系统,所述系统包括:
资源存储器、节点服务器及运算服务器;
所述资源存储器,用于为所述节点服务器提供资源;
所述运算服务器,用于从分布式系统中获取各个节点服务器;以及
用于对获取的系统中的所有节点依次编号,其中若系统中包括节点服务器数为n个,依次编号为0到n-1;
将所有获取的节点服务器按照各个节点服务器对应的编号顺序排列为环状,将所述节点服务器的资源编号除n得到的商作为其对应节点服务器的获取资源量的对应的节点服务器编号,所述资源编号为对应该系统中各个节点服务器待分配处理的所有资源对应的标识;
当节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并重新计算每个节点服务器上获取资源量的节点服务器编号。
作为优选的,所述当系统中的节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并从新计算每个节点服务器上获取资源量的节点服务器编号,包括:
当已分配的资源所对应节点服务器发生变更时,若设增加的节点服务器的编号为k,则对应的增加后的各个节点服务器编号应该为0、1、2......k、k+1、......n-1+k;
则将资源转移到新的节点服务器上,转移到新的节点服务器k上的资源量为1/(n+1)。
作为优选的,所述当节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并重新计算每个节点服务器上获取资源量的节点服务器编号,包括:
当n远大于1时,则系统中平均每个节点服务器需要接收的资源量为1/(n*(n+1)),平均每个节点服务器需要移走的资源量是(2/n*(n+1))个。
本公开的实施例提供的技术方案可以包括以下有益效果:
本发明提供的资源分配方法及系统,在保持资源分布均匀的条件下,尽可能减少系统节点变更过程中需要转移的资源量,从而减轻系统负担。一方面在于分布式系节点的编号和排列方式以及资源分布算法,凡将分布式系统中的节点进行顺序编号,并排列成环状,同时使用资源编号对节点总数取商(而非取余)的方式构建的资源分布算法,都应视为与本发明等同的算法方案。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种方法的流程图;
图2A是根据一示例性实施例示出的资源分布示意图;
图2B是图2A所示出的系统扩容后资源分布示意图;
图3根据一示例性实施例示出的一种系统的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1、图2A及图2B所示,是根据一示例性实施例示出的一种分布式系统中资源配置方法流程图,如图1所示,包括以下步骤。
所述方法包括:
在步骤S101中,从分布式系统中获取各个节点;
在步骤S102中,对获取的系统中的所有节点依次编号,其中若系统中包括节点数为n个,依次编号为0到n-1;
在步骤S103中,将所有获取的节点按照各个节点对应的编号顺序排列为环状,将所述节点的资源编号除n得到的商作为其对应节点的获取资源量的对应的节点编号,所述资源编号为对应该系统中各个节点待分配处理的所有资源对应的标识;
在步骤S104中,当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号。
在资源配置的过程中,例如:假设系统中有5个节点,300个资源,平均每个节点存放60个资源。
现在增加一个节点,变成6个节点,资源数还是300个,所以平均每个节点就只需要存放50个资源了。
当上述情况出现的时候,300个资源从分布在5个节点上,变成分布在6个节点上,这个过程意味着有一些资源需要从原来所在的节点迁移到一个新的节点上。本发明提供的方法就是希望这个转移的量尽量的少。
假设之前有5个节点,300个资源,平均每个节点存放60个资源。
每个节点的资源配置的编码为如下:
初始状态:
0号节点存放资源:0-59
1号节点存放资源:60-119
2号节点存放资源:120-179
……
其它节点以此类推。
编号为0-59号资源要放在0号节点上的原因是0/60=0,1/60=0,...59/60=0,取整了都是0;
相应的,60-119号资源放在1号节点上,以此类推。
当系统扩容后,新增了一个节点,假设是2号节点加入,原来的2号节点变成3号,节点总数变成6个了,资源还是300个,所以:
节点编号0:0-49;
节点编号1:50-99;
节点编号2:100-149(新增节点);
节点编号3:150-199(原来的2号);
节点编号4:200-249(原来的3号)。
对比之前的资源编号就可以发现:
0号节点:原来存放了0-59号资源,现在应该存放0-49号资源,所以有10个资源需要移走。移给谁呢?移给1号节点。
节点编号1:原来存放了60-119号资源,现在应该存放50-99,所以需要接收10个资源,移走20个资源。
节点编号2:新节点,需要接收50个资源;
编号节点3:也就是原来的2号节点,原来存放了120-179号资源,现在应该存放150-199号资源,应接收20个,移走30个;
编号节点4:也就是原来的3号节点,原来存放了180-239号资源,现在应该存放200-249号资源,应接收10个,移走20个;
编号节点5:也就是原来的4号节点,原来存放了240-299号资源,现在应该存放250-299号资源,应接收0个,移走10个。
可以推演一下,将节点分为三类:
1、新增节点,需要接收1/6*300个资源;
2、普通节点,即除了新增节点的后一个节点和最后一个节点以外,其它所有的节点需要接收和移走的资源数量是相等的,分别要接收10个,移走20个;
3、新增节点的后一个节点,需要接收20个资源,移走30个资源,比普通节点略多;
4、整个系统的最后一个节点,只需要移走10个资源。
当系统节点数远远大于1时,普通节点是大多数。取极限值可以总结出:
所以可以近似认为平均每个节点的资源转移量,就是普通节点的资源转移量。要接收(1/(n-1)-1/n)个,移走2*(1/(n-1)-1/n)个;
(1/(n-1)-1/n)化简就是1/(n*(n+1))。
当系统从k个节点,增加到k+1个节点时,平均每个节点需要接收的资源量是(1/(k*(k+1))个,平均每个节点需要移走的资源量是(2/(k*(k+1))个。
因此总结出来资源的配置方法是:平均每个节点需要接收的资源量为1/(n*(n+1)),平均每个节点需要移走的资源量是(2/(n*(n+1))个。
图2A图2A是根据一示例性实施例示出的资源分布示意图;图2B是图2A所示出的系统扩容后资源分布示意图。
如图3所示,为本发明人实施例另一方便还提供一种分布式系统中资源配置系统,所述系统包括:
资源存储器301、节点服务器302及运算服务器303;
资源存储器301,用于为所述节点服务器302提供资源;
运算服务器303,用于从分布式系统中获取各个节点服务器302;以及
用于对获取的系统中的所有节点依次编号,其中若系统中包括节点服务器302数为n个,依次编号为0到n-1;
将所有获取的节点服务器302按照各个节点服务器302对应的编号顺序排列为环状,将所述节点服务器302的资源编号除n得到的商作为其对应节点服务器302的获取资源量的对应的节点服务器编号,所述资源编号为对应该系统中各个节点服务器待分配处理的所有资源对应的标识;
当节点服务器302增加后,对增加节点服务器302后的各个节点服务器302重新编号,并重新计算每个节点服务器302上获取资源量的节点服务器302编号。
进一步,所述当系统中的节点服务器302增加后,对增加节点服务器302后的各个节点服务器302重新编号,并从新计算每个节点服务器302上获取资源量的节点服务器编号,包括:
当已分配的资源所对应节点服务器302发生变更时,若设增加的节点服务器302的编号为k,则对应的增加后的各个节点服务器编号应该为0、1、2......k、k+1、......n-1+k;
则将资源转移到新的节点服务器302上,转移到新的节点服务器302k上的资源量为1/(n+1)。
进一步,所述当节点服务器302增加后,对增加节点服务器302后的各个节点服务器重新编号,并重新计算每个节点服务器302上获取资源量的节点服务器编号,包括:
当n远大于1时,则系统中平均每个节点服务器302需要接收的资源量为1/(n*(n+1)),平均每个节点服务器302需要移走的资源量是(2/n*(n+1))个。
本公开的实施例提供的技术方案可以包括以下有益效果:
本发明提供的资源分配方法及系统,在保持资源分布均匀的条件下,尽可能减少系统节点变更过程中需要转移的资源量,从而减轻系统负担。一方面在于分布式系节点的编号和排列方式以及资源分布算法,凡将分布式系统中的节点进行顺序编号,并排列成环状,同时使用资源编号对节点总数取商(而非取余)的方式构建的资源分布算法,都应视为与本发明等同的算法方案。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (6)
1.一种分布式系统中资源配置方法,其特征在于,所述方法包括:从分布式系统中获取各个节点;对获取的系统中的所有节点依次编号,其中若系统中包括节点数为n个,依次编号为0到n-1;将所有获取的节点按照各个节点对应的编号顺序排列为环状,将所述节点的资源编号除以平均每个节点存放的资源数目得到的商作为其对应节点的获取资源量的对应的节点编号,所述资源编号为对应该系统中各个节点待分配处理的所有资源对应的标识;当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号。
2.根据权利要求1所述的方法,其特征在于,所述当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号,包括:当资源已分配的所对应节点发生变更时,若设增加的节点的编号为k,则对应的增加后的各个节点编号应该为0、1、2......k、k+1、......n-1+k;则将资源转移到新的节点上,转移到新的节点k上的资源量为资源总数*1/(n+1)。
3.根据权利要求1所述的方法,其特征在于,所述当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号,包括:当n远大于1时,则系统中平均每个节点需要接收的资源量为资源总数*1/(n*(n+1)),平均每个节点需要移走的资源量是资源总数*(2/n*(n+1))个。
4.一种分布式系统中资源配置系统,其特征在于,所述系统包括:资源存储器、节点服务器及运算服务器;所述资源存储器,用于为所述节点服务器提供资源;所述运算服务器,用于从分布式系统中获取各个节点服务器;以及用于对获取的系统中的所有节点依次编号,其中若系统中包括节点服务器数为n个,依次编号为0到n-1;将所有获取的节点服务器按照各个节点服务器对应的编号顺序排列为环状,将所述节点服务器的资源编号除以平均每个节点存放的资源数目得到的商作为其对应节点服务器的获取资源量的对应的节点服务器编号,所述资源编号为对应该系统中各个节点服务器待分配处理的所有资源对应的标识;当节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并重新计算每个节点服务器上获取资源量的节点服务器编号。
5.根据权利要求4所述的系统,其特征在于,所述当系统中的节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并从新计算每个节点服务器上获取资源量的节点服务器编号,包括:当已分配的资源所对应节点服务器发生变更时,若设增加的节点服务器的编号为k,则对应的增加后的各个节点服务器编号应该为0、1、2......k、k+1、......n-1+k;则将资源转移到新的节点服务器上,转移到新的节点服务器k上的资源量为资源总数*1/(n+1)。
6.根据权利要求4所述的系统,其特征在于,所述当节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并重新计算每个节点服务器上获取资源量的节点服务器编号,包括:当n远大于1时,则系统中平均每个节点服务器需要接收的资源量为资源总数*1/(n*(n+1)),平均每个节点服务器需要移走的资源量是资源总数*(2/n*(n+1))个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410154901.6A CN104793926B (zh) | 2014-04-17 | 2014-04-17 | 一种分布式系统中资源配置方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410154901.6A CN104793926B (zh) | 2014-04-17 | 2014-04-17 | 一种分布式系统中资源配置方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104793926A CN104793926A (zh) | 2015-07-22 |
CN104793926B true CN104793926B (zh) | 2018-06-01 |
Family
ID=53558742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410154901.6A Active CN104793926B (zh) | 2014-04-17 | 2014-04-17 | 一种分布式系统中资源配置方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104793926B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681824A (zh) * | 2015-11-10 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 用于分布式系统的调度方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523372A (zh) * | 2006-10-05 | 2009-09-02 | 澳大利亚国家Ict有限公司 | 分散式多用户在线环境 |
CN101753610A (zh) * | 2008-12-19 | 2010-06-23 | 华为技术有限公司 | 分布式网络构造方法、装置和系统以及任务处理方法 |
CN102055798A (zh) * | 2010-12-09 | 2011-05-11 | 南京远古科技有限公司 | 基于Chord环和区域Chord环内节目收集方法 |
CN102457428A (zh) * | 2010-10-27 | 2012-05-16 | 中兴通讯股份有限公司 | 分布式哈希表网络的负载均衡实现方法及装置 |
CN102567527A (zh) * | 2011-12-30 | 2012-07-11 | 华东师范大学 | 按列存储环境下分布式系统中物化视图布局及其维护方法 |
-
2014
- 2014-04-17 CN CN201410154901.6A patent/CN104793926B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523372A (zh) * | 2006-10-05 | 2009-09-02 | 澳大利亚国家Ict有限公司 | 分散式多用户在线环境 |
CN101753610A (zh) * | 2008-12-19 | 2010-06-23 | 华为技术有限公司 | 分布式网络构造方法、装置和系统以及任务处理方法 |
CN102457428A (zh) * | 2010-10-27 | 2012-05-16 | 中兴通讯股份有限公司 | 分布式哈希表网络的负载均衡实现方法及装置 |
CN102055798A (zh) * | 2010-12-09 | 2011-05-11 | 南京远古科技有限公司 | 基于Chord环和区域Chord环内节目收集方法 |
CN102567527A (zh) * | 2011-12-30 | 2012-07-11 | 华东师范大学 | 按列存储环境下分布式系统中物化视图布局及其维护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104793926A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829610B (zh) | 一种神经网络前向计算过程中的内存管理方法及设备 | |
CN109254729B (zh) | 一种对象存储的方法和装置 | |
CN106878415B (zh) | 数据消费的负载均衡方法及装置 | |
CN109002259B (zh) | 一种归置组所属硬盘分配方法、系统、装置及存储介质 | |
CN103929353B (zh) | 即时消息的处理方法和装置 | |
CN107203365A (zh) | 随机数的生成及获取方法和装置 | |
CN107659498B (zh) | 一种报文转发方法和装置 | |
US10469348B2 (en) | Centrality-based caching in information-centric networks | |
US10296394B2 (en) | Consistent hashing | |
CN106708822A (zh) | 一种文件存储方法和装置 | |
CN110275873A (zh) | 文件存储方法、装置、存储管理设备及存储介质 | |
CN104793926B (zh) | 一种分布式系统中资源配置方法及系统 | |
CN111064776B (zh) | 区块链中区块的生成方法、记账节点及存储介质 | |
CN107562762A (zh) | 数据索引构建方法及装置 | |
CN104133823B (zh) | 一种推荐多媒体信息的方法和装置 | |
CN111078413B (zh) | 一种定时任务的执行方法、装置、计算机设备及存储介质 | |
JP6044628B2 (ja) | 乱数発生装置、乱数発生方法、オブジェクト配置装置、並びにコンピュータ・プログラム | |
KR20160001598A (ko) | 스토리지 디바이스용 호스트 키 생성 방법 및 시스템 | |
US20160253773A1 (en) | Path calculation device, path calculation method and program | |
JP2016127354A (ja) | 光ネットワークにおけるパスに割り当てる周波数の決定装置 | |
CN106156169B (zh) | 离散数据的处理方法和装置 | |
CN108984780B (zh) | 基于支持重复键值树数据结构管理磁盘数据的方法和装置 | |
CN107633389A (zh) | 一种电子红包的分配方法及装置 | |
CN109032804B (zh) | 数据处理方法和装置、服务器 | |
CN109510855B (zh) | 事件分发系统、方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: View of the road Xiamen city Fujian province 361008 Software Park 26 Room 204 No. two Applicant after: Xiamen ultimate interactive network technology Limited by Share Ltd Address before: View of the road Xiamen city Fujian province 361008 Software Park 26 Room 204 No. two Applicant before: XIAMEN JIZHI NETWORK TECHNOLOGY CO., LTD. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |