一种分布式系统中资源配置方法及系统的制作方法

文档序号:8472763阅读:423来源:国知局
一种分布式系统中资源配置方法及系统的制作方法
【技术领域】
[0001]本公开涉及互联网终端领域,特别涉及一种分布式系统中资源配置方法及系统。
【背景技术】
[0002]分布式系统中,如何将资源分散定位到系统中的各节点,是其核心问题之一。目前的各种主流解决方案,都是基于不同的hash算法,在各资源与各节点之间形成映射,其不同之处,主要在于对资源分布均匀性、扩容支持等问题的处理,我们选取直接取余算法和Dynamo算法作为背景方案的两个典型代表。
[0003]关于直接取余算法
[0004]直接取余算法是最简单的hash分布算法之一,其基本思路是将分布式系统中的节点进行连续编号,将节点数作为直接取余算法中的除数因子,从而形成多个资源与多个节点的稳定映射关系。该算法方案中,系统各节点如图1所示,被编号形成一个线性序列。通过将资源编号对节点总数η取余,得到该资源对应的节点编号。该方案在系统初始阶段,资源分布是均匀的,但在扩容时,由于系统节点总数从η增加到η+1,每个节点有大约n/(n+1)的资源需要转移到相邻节点,而对整个系统来说,几乎所有的资源都需要移动,从而造成很大的系统负担。
[0005]关于Dynamo算法
[0006]Dynamo算法源于亚马逊的研究论文,其基本思路是,在给定的值空间中,将各节点与某一给定值绑定,然后将所有节点排列成环状。对资源应用稳定不变的hash算法及参数,然后取邻近的节点作为其资源的存放节点。在该算法方案中,系统各节点如图2所示,被编号形成一个环状序列,每个节点对应一个资源编号,并负责接纳后序所有编号的资源,直到下一个节点对应的编号。。
[0007]图2中,编号为O的节点,将负责存放编号0-99的资源,编号为100的节点负责存放编号100-299的资源,而编号为300的节点则负责存放所有编号在300以上的资源。
[0008]该系统在扩容时,将增加一个节点到环中,例如,插入一个节点在编号100与编号300的节点之间,并将其编号设定为200,则扩容过程将导致编号为100的节点上的部分资源需要转移到新的节点上,而其系统中的其它节点无需变动,扩容过程需要转移的资源较少。但会因为扩容过程造成节点分布不均匀。相比较而言,背景I所述方案中,各节点的分布是均匀的。

【发明内容】

[0009]为克服相关技术中存在的问题,本公开提供一种分布式系统中资源配置方法及系统。所述技术方案如下:
[0010]根据本公开实施例的第一方面,提供了一种分布式系统中资源配置方法,所述方法包括:
[0011]从分布式系统中获取各个节点;
[0012]对获取的系统中的所有节点依次编号,其中若系统中包括节点数为η个,依次编号为O到n-Ι ;
[0013]将所有获取的节点按照各个节点对应的编号顺序排列为环状,将所述节点的资源编号除η得到的商作为其对应节点的获取资源量的对应的节点编号,所述资源编号为对应该系统中各个节点待分配处理的所有资源对应的标识;
[0014]当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号。
[0015]作为优选的,所述当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号,包括:
[0016]当资源已分配的所对应节点发生变更时,若设增加的节点的编号为k,则对应的增加后的各个节点编号应该为0、1、2......k、k+1.......n-l+k ;
[0017]则将资源转移到新的节点上,转移到新的节点k上的资源量为I/(n+1)。
[0018]作为优选的,所述当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号,包括:
[0019]当η远大于I时,则系统中平均每个节点需要接收的资源量为I/(η*(n+1)),平均每个节点需要移走的资源量是(2/n*(n+l))个。
[0020]本发明人实施例另一方便还提供一种分布式系统中资源配置系统,所述系统包括:
[0021]资源存储器、节点服务器及运算服务器;
[0022]所述资源存储器,用于为所述节点服务器提供资源;
[0023]所述运算服务器,用于从分布式系统中获取各个节点服务器;以及
[0024]用于对获取的系统中的所有节点依次编号,其中若系统中包括节点服务器数为η个,依次编号为O到η-1 ;
[0025]将所有获取的节点服务器按照各个节点服务器对应的编号顺序排列为环状,将所述节点服务器的资源编号除η得到的商作为其对应节点服务器的获取资源量的对应的节点服务器编号,所述资源编号为对应该系统中各个节点服务器待分配处理的所有资源对应的标识;
[0026]当节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并重新计算每个节点服务器上获取资源量的节点服务器编号。
[0027]作为优选的,所述当系统中的节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并从新计算每个节点服务器上获取资源量的节点服务器编号,包括:
[0028]当已分配的资源所对应节点服务器发生变更时,若设增加的节点服务器的编号为k,则对应的增加后的各个节点服务器编号应该为O、1、2......k、k+l.......n-1+k ;
[0029]则将资源转移到新的节点服务器上,转移到新的节点服务器k上的资源量为I/(n+1)。
[0030]作为优选的,所述当节点服务器增加后,对增加节点服务器后的各个节点服务器重新编号,并重新计算每个节点服务器上获取资源量的节点服务器编号,包括:
[0031]当η远大于I时,则系统中平均每个节点服务器需要接收的资源量为I/(η*(n+1)),平均每个节点服务器需要移走的资源量是(2/n*(n+l))个。
[0032]本公开的实施例提供的技术方案可以包括以下有益效果:
[0033]本发明提供的资源分配方法及系统,在保持资源分布均匀的条件下,尽可能减少系统节点变更过程中需要转移的资源量,从而减轻系统负担。一方面在于分布式系节点的编号和排列方式以及资源分布算法,凡将分布式系统中的节点进行顺序编号,并排列成环状,同时使用资源编号对节点总数取商(而非取余)的方式构建的资源分布算法,都应视为与本发明等同的算法方案。
[0034]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
【附图说明】
[0035]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
[0036]图1是根据一示例性实施例示出的一种方法的流程图;
[0037]图2A是根据一示例性实施例示出的资源分布示意图;
[0038]图2B是图2A所示出的系统扩容后资源分布示意图;
[0039]图3根据一示例性实施例示出的一种系统的结构框图。
【具体实施方式】
[0040]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
[0041]图1、图2A及图2B所示,是根据一示例性实施例示出的一种分布式系统中资源配置方法流程图,如图1所示,包括以下步骤。
[0042]所述方法包括:
[0043]在步骤SlOl中,从分布式系统中获取各个节点;
[0044]在步骤S102中,对获取的系统中的所有节点依次编号,其中若系统中包括节点数为η个,依次编号为O到n-Ι ;
[0045]在步骤S103中,将所有获取的节点按照各个节点对应的编号顺序排列为环状,将所述节点的资源编号除η得到的商作为其对应节点的获取资源量的对应的节点编号,所述资源编号为对应该系统中各个节点待分配处理的所有资源对应的标识;
[0046]在步骤S104中,当系统扩容后,对增加节点后的各个节点重新编号,并重新计算每个节点上获取资源量的节点编号。
[0047]在资源配置的过程中,例如:假设系统中有5个节点,300个资源,平均每个节点存放60个资源。
[0048]现在增加一个节点,变成6个节点,资源数还是300个,所以平均每个节点就只需要存放50个资源了。
[0049]当上述情况出现的时候,300个资源从分布在5个节点上,变成分布在6个节点上,这个过程意味着有一些资源需要从原来所在的节点迁移到一个新的节点上。本发明提供的方法就是希望这个转移的量尽量的少。
[0050]假设之前有5个节点,300个资源,平均每个节点存放60个资源。
[0051]每个节点的资源配置的编码为如下:
[0052]初始状态:
[0053]O号节点存放资源:0-59
[0054]I号节点存放资源:60-119
[0055]2号节点存放资源:120-179
[0056]......
[0057]其它节点以此类推。
[0058]编号为0-59号资源要放在O号节点上的原因是0/6 = 0,1/6 = 0,...59/6 = 0,取整了都是O ;
[0059]相应的,60-119号资源放在I号节点上,以此类推。
[0060]当系统扩容后,新增了一个节点,假设是2号节点加入,原来的2号节点变成3号,节点总数变成6个了,资源还是300个,所以:
[0061]节点编号O:0-49;
[0062]节点编号1:50-99 ;
[0063]节点编号2: 100-14
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1