[发明专利]基于虚拟节点存储优化的Swift负载均衡方法有效
申请号: | 201610171589.0 | 申请日: | 2016-03-24 |
公开(公告)号: | CN105657064B | 公开(公告)日: | 2019-03-12 |
发明(设计)人: | 杨鹏;赵丹丹;袁志伟;刘旋 | 申请(专利权)人: | 东南大学 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 李玉平 |
地址: | 210096 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于虚拟节点存储优化的Swift负载均衡方法,该方法可以动态均衡云存储服务组件Swift中各存储服务器的负载。与传统负载均衡方法不同的是,该方法既非单一的全局负载均衡,也非单一的局部负载均衡,而是通过采用分组、合并的机制,实现全局和局部相结合的动态负载均衡。该方法既能保证云存储系统的负载保持平衡状态,提升存储资源的利用率,又能提高云存储系统的存取效率,更加适用于大规模、分布式云存储服务需求。 | ||
搜索关键词: | 基于 虚拟 节点 存储 优化 swift 负载 均衡 方法 | ||
【主权项】:
1.一种基于虚拟节点存储优化的Swift负载均衡方法,其特征在于,包括如下步骤:(1)与虚拟节点相关参数的初始化;为了达到存储负载均衡的效果,Swift存储系统需要记录虚拟节点的相关参数,包括虚拟节点的相对空闲度、虚拟节点所属类别、虚拟节点类别链表、虚拟节点的组别数、虚拟节点所属组别号;在Swift存储系统开始运行时,需要对这些参数进行初始化;(2)对象的存储过程;该过程将主要根据系统中虚拟节点是否已经进行过分组,而分情况实施;若系统中虚拟节点尚未进行过分组,紧接着判断采用虚拟节点分组时间点判别方法,判断当前时刻是否需要对虚拟节点进行分组;如果无需分组,直接进行对象存储;如果需要分组,则先按照虚拟节点的分组过程对虚拟节点进行分组;一旦系统中虚拟节点进行过分组,判断对象被映射到的分组是否能够存储该对象;如果能够存储,将对象存储在合适的存储服务器;否则,先按照分组合并过程将对象被映射到的分组与另一个分组进行合并,然后在合并后的分组中完成对象存储;(3)对象的检索过程;当系统收到读取某一对象的请求时,首先根据Swift中的Ring环找到该对象对应的虚拟节点,然后查询该虚拟节点所对应的存储服务器;如果在存储服务器中找到所请求的对象,则直接读取;否则,先找出该虚拟节点所在的分组,然后遍历分组内所有虚拟节点对应的存储服务器,直至找到所请求的对象;系统运行时需要设置与虚拟节点的相关参数,这些参数主要包括:虚拟节点的相对空闲度、虚拟节点所属类别、虚拟节点类别链表、虚拟节点的组别数、虚拟节点所属组别号;虚拟节点的相对空闲度;设Ring环上共有n个虚拟节点,编号为i,0≤i≤n‑1的虚拟节点Vni的相对空闲度RFi是指其剩余空间占总存储空间的百分比,取值范围为区间[0%,100%];具体采用公式1进行计算:其中,表示编号为i的虚拟节点Vni的存储空间大小,mi表示编号为i的虚拟节点目前已存储的对象个数,Mj表示编号为i的虚拟节点存储的第j个对象的大小,0≤j≤mi;当编号为i的虚拟节点新增一个大小为a的存储对象时,则其相对空闲度RFi采用公式2进行更新:用长度为n的数组Vnode_left_percentage来记录Ring环上n个虚拟节点的相对空闲度,其中Vnode_left_percentage[i]表示编号为i的虚拟节点的相对空闲度,初始化时将该数组所有元素初值设为100%;虚拟节点所属类别;设类别数目为cn,首先将相对空闲度取值区间[0%,100%]划分成cn个等间隔的子区间,得到cn个子区间,记为子区间cn‑1、子区间cn‑2、…、子区间0;相对空闲度落在同一子区间中的所有虚拟节点视为同一类别,则总共得到cn个类别,记为类别cn‑1、类别cn‑2、…、类别0;用长度为cn的数组Vnode_counts_by_key来记录属于某一类别的虚拟节点个数;该数组在初始化时Vnode_counts_by_key[cn‑1]=n,其余数组元素全为0;虚拟节点类别链表;用cn个链表List0,List1,…存储属于对应类别号下的所有虚拟节点编号;在初始化时,Listcn‑1中存储虚拟节点编号0、1、2、…、n‑1,其他cn‑1个链表均初始化为空表;虚拟节点的组别数;用参数gn表示所有虚拟节点的当前分组总数,在初始时其值设为0,表示初始时尚未进行虚拟节点分组;某一时刻系统中所有gn个组别记为分组0、分组1、…、分组gn‑1,并且用VNG0、VNG1、…、VNGgn‑1表示属于这些分组的虚拟节点编号集合;虚拟节点所属组别号;用长度为n的数组Vnode_map记录各虚拟节点所属的组别号,Vnode_map[i]代表编号为i的虚拟节点所属的组别号;该数组在初始化时将所有元素置为‑1;在对象的存储过程中,若系统中虚拟节点尚未进行过分组,需要判断当前时刻是否是对虚拟节点进行分组的时间点;确定虚拟节点分组时间点的标准是:保证每个分组至少包含两种类别的虚拟节点,并且在同一分组中属于一种类别的虚拟节点只有1个;在系统开始运行后的短期内,所有虚拟节点的相对空闲度值将集中在一个子区间,即所有虚拟节点都属于一个类别,此时不满足虚拟节点分组时间点的鉴别标准;在系统运行一段时间之后,当系统收到对象存储请求时,采用如下方法判别当前时刻是否是对虚拟节点进行分组的合理时间点:(1)创建与Vnode_counts_by_key相同的数组Vnode_counts_by_key_bk,将当前Vnode_counts_by_key中的值复制到Vnode_counts_by_key_bk中;(2)遍历数组Vnode_counts_by_key_bk,选出非零的最小值Min_count,然后将Vnode_counts_by_key_bk中所有非零元素都减去Min_count;(3)若此时数组所有元素都为0,则返回True,结束;若此时数组只有一个元素不为0,其余都为0,则返回False,结束;否则转至步骤(2);若上述步骤(3)返回True,表示当前时刻是对虚拟节点进行分组的时间点,则按照以下的虚拟节点分组过程进行分组;若返回False,则意味着当前时刻不需要为虚拟节点分组;在对象的存储过程中,一旦当前时刻被判定为虚拟节点分组时间点,就需要对虚拟节点进行分组;分组的具体过程如下:(1)定义长度为cn的布尔型数组CBool,其cn个元素均初始化为0;(2)从数组Vnode_counts_by_key中选出非零最小值,赋给临时变量mc;同时对于该数组中每一个值非零的元素所对应的类别j,0≤j≤cn‑1,设置CBool[j]=1;(3)建立mc个字典结构Ggn,Ggn+1,…,Ggn+mc‑1,它们代表新增加的mc个分组;每个字典结构包含多个字典元素,每个字典元素是一个“key:value”对,“key:value”对为键值对,其中键为类别号,值为与该类别号对应的虚拟节点类别链表;(4)遍历布尔型数组CBool,对于其中每一个值为1的数组元素CBool[k],进行如下操作:首先建立mc个字典元素DE(k,0),DE(k,1),…,DE(k,mc‑1);然后从虚拟节点类别链表Listk中依次取出mc个虚拟节点编号,不妨记为Vn0、Vn1、…Vnmc‑1,将它们分别加入字典元素DE(k,0),DE(k,1),…,DE(k,mc‑1)中,即在每个字典元素的虚拟节点编号链表中加入1个虚拟节点编号;最后将这mc个字典元素对应加入到mc个字典结构Ggn,Ggn+1,…,Ggn+mc‑1中,即把编号为Vnt,0≤t≤mc‑1的虚拟节点加入新的分组gn+t,同时对数组Vnode_map进行更新,Vnode_map[Vnt]=gn+t;(5)对数组Vnode_counts_by_key进行更新,使该数组中所有非零元素的值都减去mc;(6)对虚拟节点组别数gn进行更新,gn=gn+mc;(7)若此时Vnode_counts_by_key数组中元素不全为0,则跳转至步骤(2);否则,结束分组,同时保存由gn个字典结构组成的集合G={G0,G1,…,Ggn‑1},它的元素包含了gn个分组的信息;在存储对象的过程中会导致分组合并;当某个分组内所有虚拟节点的相对空闲度都比较低时,需要在所有分组中选出一个负载较低的分组,与该分组进行合并;设在当前时刻,分组m,0≤m≤gn‑1,该分组由字典结构Gm描述,对应虚拟节点编号集合VNGm,需要与另一个分组进行合并,具体方法如下:(1)遍历除分组m外的所有分组,找出其中包含有当前相对空闲度最大的虚拟节点的一个分组k,0≤k≤gn‑1且k≠m;(2)将分组m中的所有虚拟节点都加入分组k,相对应地将字典结构Gm中所有字典元素并入字典结构Gk;在并入时,若两个字典元素的key值相同,则只保留一个字典元素,并且需要将它们的value部分进行合并;(3)删除Gm,并将组别号大于m的所有分组的组别号减去1,同时对数组Vnode_map中虚拟节点所属组别号进行对应更新;(4)最后对虚拟节点组别数gn进行更新,gn=gn–1。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610171589.0/,转载请声明来源钻瓜专利网。