CN107465729A - 基于访问次数排名的虚拟节点副本调整***及方法 - Google Patents
基于访问次数排名的虚拟节点副本调整***及方法 Download PDFInfo
- Publication number
- CN107465729A CN107465729A CN201710609966.9A CN201710609966A CN107465729A CN 107465729 A CN107465729 A CN 107465729A CN 201710609966 A CN201710609966 A CN 201710609966A CN 107465729 A CN107465729 A CN 107465729A
- Authority
- CN
- China
- Prior art keywords
- node
- dummy node
- copy
- dummy
- physical
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于访问次数排名的虚拟节点副本调整***及方法。涉及计算机信息存储领域。本发明提出了一种基于虚拟节点访问排名的副本调整方法设计,当有新节点加入或者旧节点删除时,根据虚拟节点的访问次数排名,动态调整虚拟节点和物理节点的映射关系,实现了存储***的负载均衡,提高了存储性能。
Description
技术领域
本发明涉及计算机信息存储技术领域,具体涉及一种在对象存储中基于访问次数排名的虚拟节点副本调整***及方法。
背景技术
随着互联网、物联网等技术发展,特别是web2.0数据密集型网络技术的广泛应用,使得非结构化数据呈指数型增长。预计到2020年,数据量将达到40ZB,其中80%是非结构化数据,其中大部分是非活跃数据。具有PB级别能力的扩展能力块存储和文件存储不能满足数据存储的需求,全新的存储***架----对象存储应运而生。对象存储作为云存储的三种服务之一,满足了存储归档和云服务两大需求。在航天领域,可以用来存储卫星云图、飞行器运行轨道数据等非结构化数据,为云平台提供弹性扩容的存储服务。为保证数据的安全性,引入了副本技术。在副本调整方面,当物理节点加入或者删除时,由于虚拟节点副本调整的随机性,导致了***的负载不均衡。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何实现在有新节点加入存储***或者旧节点从存储***删除时,动态调整虚拟节点和物理节点的映射关系,实现存储***的负载均衡,提高存储性能。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于访问次数排名的虚拟节点副本调整***,包括:
虚拟节点访问次数排序模块,用于根据用户对虚拟节点的访问记录确定虚拟节点的访问次数,根据所述访问次数的多少,对存储***中每个物理节点所属的虚拟节点进行排名;每个物理节点对应存储***中的一个设备,物理节点所属的每一个虚拟节点为一个副本,或称为虚拟节点副本;
虚拟节点副本迁移列表计算模块,当有物理节点加入所述存储***时,用于获取各个物理节点的权重,计算物理节点单位权重的虚拟节点数,根据各个物理节点的单位权重,将要调整的虚拟节点副本加入到一迁移列表中;当有物理节点要从所述存储***中删除或者说退出时,将对应设备从设备列表中移除,根据单位权重的虚拟节点数计算剩余每个物理节点可接收的虚拟节点副本个数;所述单位权重等于设备权重除以设备容量;
虚拟节点副本调整模块,用于调整虚拟节点和物理节点之间的映射关系;有物理节点加入所述存储***时,根据所述迁移列表,直接修改虚拟节点到物理节点的映射表;当有物理节点要从所述存储***中删除或者说退出时,计算各个物理节点可接收的虚拟节点副本数量,并且按照物理节点的访问总数,计算单位权重的访问量,按照单位权重的访问量进行排序,依次从已删除的物理节点的虚拟节点列表中获取对应个数的虚拟节点副本分配给对应的物理节点。
优选地,所述虚拟节点副本访问排序模块包括虚拟节点副本访问次数记录子模块、物理节点拥有虚拟节点副本提取子模块、虚拟节点副本访问次数排序子模块;
所述虚拟节点副本访问记录子模块用于当用户请求对象时,对虚拟节点副本的访问次数进行记录,用户读取的对象为/account/container/object,调用Ring类的get_part()方法得到对象所在的虚拟节点part,Ring类的get_node()方法返回一个虚拟节点所在物理节点,为所有设备创建一个共享字典visit_Number_Dic用来记录每个虚拟节点副本的访问次数;
物理节点拥有虚拟节点副本提取子模块用于通过先行后列的方式遍历二维数组replaica2part2dev,该二维数组存储虚拟节点到物理节点的映射关系,提取每个物理节点所属的虚拟节点副本;然后利用enumerate函数遍历一维数组partition_single_array,partition_single_array存储虚拟节点副本序号,获得虚拟节点副本所在物理节点的id,通过比较物理节点的id来判断虚拟节点副本是否属于其中一个物理节点,然后将提取出的虚拟节点副本以共享字典visit_Number_Dic的形式存储,其中值为虚拟节点副本的访问次数;
虚拟节点副本访问排序子模块用于根据虚拟节点副本的访问次数,对物理节点拥有的虚拟节点副本进行访问次数排名,将每个设备的物理节点所拥有的虚拟节点副本和访问次数存储到字典dev_access_partition_dic,利用字典dev_access_partition_dic得到保存的虚拟节点副本访问次数的列表,对虚拟节点副本访问次数列表进行排序,按照已经排序好的访问次数列表,实现对虚拟节点的排名。
优选地,有物理节点加入时,所述虚拟节点副本迁移列表计算模块包括:节点加入子模块、单位权重虚拟节点量计算子模块、虚拟节点副本迁移列表计算子模块;节点加入子模块用于将物理节点加入到存储***,通过执行一命令来控制节点的加入,即:判断命令输入是否有误,利用izip和islice工具从命令行提出设备的相关信息,然后实现物理节点的添加,添加时,设置设备id和设备权重,最后将设备加入到设备列表中;单位权重虚拟节点量计算子模块用于将各设备权重进行相加求和,根据虚拟节点总数求出单位权重的物理节点拥有的虚拟节点的数量,遍历设备列表,获取个物理节点的权重,并计算单位权重的虚拟节点数;虚拟节点副本迁移列表计算子模块用于根据各个物理节点的单位权重,将要调整的虚拟节点副本加入到迁移列表中;
有物理节点删除时,虚拟节点副本迁移列表计算模块囊括:节点删除子模块、单位权重计算子模块、虚拟节点副本迁移列表计算子模块;节点删除子模块用于根据设备节点的id,从设备列表中找到该物理设备,设置该物理节点的权重为0,将设备从设备列表中移除;单位权重虚拟节点量计算子模块用于将各设备权重进行相加求和,根据虚拟节点总数求出单位权重的物理节点拥有的虚拟节点的数量,遍历设备列表,获取个物理节点的权重,并计算单位权重的虚拟节点数;所述虚拟节点副本迁移列表计算子模块用于计算各个物理节点要接收的虚拟节点副本的数量,顺序遍历设备列表,根据物理设备单位权重的虚拟节点数计算每个物理节点可接收的虚拟节点副本个数,以列表形式存储。
优选地,有物理节点加入时,所述虚拟节点副本调整模块包含虚拟节点副本调整子模块,需要调整的虚拟节点副本已经加入到虚拟节点迁移列表中,利用map函数遍历迁移列表,确定可调整的虚拟节点副本,按照先行后列的方式,顺序查找要调整的虚拟节点副本,根据加入的物理节点的权重修改映射关系;设有权重wn+1的节点Dn+1加入存储***中,n为未加入时存储***中设备个数,根据权重计算出节点Dn+1需要分配的虚拟节点数目为结合存储***中已有的物理节点D1,D2,D3…Dn及其权重w1,w2,w3…wn,计算出各个物理节点分别需重新分配N1,N2,N3…Nn个虚拟节点副本给Dn+1, 设物理节点D1的虚拟节点排名为P11,P12,P13…P1m,依次将共N1个虚拟节点副本分配给Dn+1,对物理节点D2,D3…Dn用相同的方法处理;
有物理节点删除时,所述虚拟节点副本调整模块包括单位权重访问量排序子模块、虚拟节点副本调整子模块,将各个虚拟节点的访问次数相加求得物理节点总的访问次数,然后除以物理节点的权重,即可求得单位权重的访问量,由于物理节点数量有限,利用冒泡排序算法bubbleSort()按照单位权重的访问次数对物理节点进行排名,在进行访问调整时,访问量小的物理节点的虚拟节点副本调整到单位权重访问量大的物理节点上,访问量大的物理节点的虚拟节点副本调整到单位权重访问量小的物理节点上,当存储***中有权重wi的物理节点Di退出存储***时,设此物理节点Di所拥有的虚拟节点数为Ni,根据剩余各个物理节点的权重计算各个存储节点分配的虚拟节点数分别为根据N1,N2,N3…Nn对存储***中剩余节点的单位权重的虚拟节点访问次数进行计算,根据单位权重的虚拟节点访问次数进行从大到小排名,物理节点序列为V1,V2,Vi…Vn,n≠i,i∈[1,n),根据剩余的物理节点的单位权重,依次从已删除的物理节点的虚拟节点列表中获取对应个数的虚拟节点副本,则完成了调整。
本发明还提供了一种利用所述***基于访问次数排名的虚拟节点副本调整的方法,包括以下步骤:
利用所述虚拟节点访问次数排序模块根据用户对虚拟节点的访问记录确定虚拟节点的访问次数,根据所述访问次数的多少,对存储***中每个物理节点所属的虚拟节点进行排名;每个物理节点对应存储***中的一个设备,物理节点所属的每一个虚拟节点为一个副本,或称为虚拟节点副本;
利用所述虚拟节点副本迁移列表计算模块,当有物理节点加入所述存储***时,获取各个物理节点的权重,计算物理节点单位权重的虚拟节点数,根据各个物理节点的单位权重,将要调整的虚拟节点副本加入到一迁移列表中;当有物理节点要从所述存储***中删除或者说退出时,将对应设备从设备列表中移除,根据单位权重的虚拟节点数计算剩余每个物理节点可接收的虚拟节点副本个数;所述单位权重等于设备权重除以设备容量;
利用所述虚拟节点副本调整模块调整虚拟节点和物理节点之间的映射关系;有物理节点加入所述存储***时,根据所述迁移列表,直接修改虚拟节点到物理节点的映射表;当有物理节点要从所述存储***中删除或者说退出时,计算各个物理节点可接收的虚拟节点副本数量,并且按照物理节点的访问总数,计算单位权重的访问量,按照单位权重的访问量进行排序,依次从已删除的物理节点的虚拟节点列表中获取对应个数的虚拟节点副本分配给对应的物理节点。
(三)有益效果
本发明提出了一种基于虚拟节点访问排名的副本调整方法设计,当有新节点加入或者旧节点删除时,根据虚拟节点的访问次数排名,动态调整虚拟节点和物理节点的映射关系,实现了存储***的负载均衡,提高了存储性能。
附图说明
图1为本发明对象存储中虚拟节点副本调整策略方法的硬件架构框图;
其中:
1代理节点 2代理节点之间的通信链路
3代理集群 4代理集群与存储集群通信链路
5存储节点之间的通信链路 6存储节点
7存储集群
图2为发明的逻辑架构图;
其中:
21虚拟节点副本调整模块 22虚拟节点访问排序计算模块
23虚拟节点迁移列表计算模块 24虚拟节点
25 Ring
图3为有物理节点加入存储***时的原理图;
图4为有物理节点退出存储***时的原理图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明所需硬件平台为对象存储***。如图1所示。所述对象存储***包括代理集群3、存储集群7、代理集群和存储集群的通信链路4。其中代理集群3包括若干代理节点1和若干条代理节点之间的通信链路2;存储集群7包括若干存储节点6和若干条存储节点之间的通信链路5。
本发明的***由虚拟节点访问排序计算模块22、虚拟节点迁移列表计算模块23、虚拟节点副本调整模块21组成。Ring 25表示一种数据结构,存储了虚拟节点到物理节点的映射关系。
1)虚拟节点访问排序计算模块
虚拟节点副本访问排序模块22用于对一个物理节点拥有的虚拟节点根据访问次数进行排名,可以分为虚拟节点副本访问次数记录子模块、物理节点拥有虚拟节点副本提取子模块、虚拟节点副本访问次数排序子模块。
虚拟节点副本访问记录子模块用于当用户请求对象时,对虚拟节点副本的访问次数进行记录。用户读取的对象为/account/container/object,调用Ring类的get_part()方法得到对象所在的虚拟节点part。Ring类的get_node()方法返回一个虚拟节点所在物理节点,本发明重写了Ring类的get_node()方法,返回值为三元组的形式,三元组中第一个元素是虚拟节点副本的一个物理节点,第二个是虚拟节点,第三个是虚拟节点副本的标志。为所有设备创建一个共享字典visit_Number_Dic用来记录每个虚拟节点副本的访问次数,其中键key是虚拟节点副本,是元组形式(partition,replica_index),值value是虚拟节点副本的访问次数account。
物理节点拥有虚拟节点副本提取子模块用于通过先行后列的方式遍历二维数组——虚拟节点到物理节点的映射replaica2part2dev,提取每个物理节点拥有的虚拟节点副本,具体实现为for partition,partition_single_array emuerate(repliaca2part2dev);然后利用enumerate函数遍历一维数组partition_single_array(存储虚拟节点副本序号),获得虚拟节点副本所在物理节点的id,通过比较物理节点的id来判断虚拟节点副本是否属于某个物理节点,然后将提取出的虚拟节点副本以共享字典visit_Number_Dic的形式存储,其中键为(part,replication),值为虚拟节点副本的访问次数。
虚拟节点副本访问排序子模块用于根据虚拟节点副本的访问次数,对物理节点拥有的虚拟节点副本进行访问次数排名。将每个设备的物理节点所拥有的虚拟节点副本和访问次数存储到字典dev_access_partition_dic。利用字典dev_access_partition_dic的values()方法,得到保存的虚拟节点副本访问次数的列表。由于物理节点拥有较多的虚拟节点副本,虚拟节点副本访问次数的列表较大,选择快速排序算法quicksort()对虚拟节点副本访问次数列表进行排序,按照已经排序好的访问次数列表,实现对虚拟节点的排名,并且保存到dev_partition_rank_list列表中。
2)虚拟节点副本迁移列表计算模块
虚拟节点副本迁移列表计算模块23用于当物理节点加入或者删除时,计算重新分配的虚拟节点副本的数量,将它们加入到虚拟节点迁移列表中。分为节点加入和节点删除两种情况。
有物理节点加入时,虚拟节点副本迁移列表计算模块23分为:节点加入子模块、单位权重虚拟节点量计算子模块、虚拟节点副本迁移列表计算子模块。节点加入子模块通过调用swift-ring-builder类的add()方法将物理节点加入到存储集群7。通过在代理节点1上执行命令swift-ring-builder<builder_file>add[r<region>]z<zone><ip>:<port>/<device_name>_<meta><weight>来控制节点的加入,判断命令输入是否有误,利用izip和islice工具从命令行提出设备的相关信息,例如region、zone、ip、port、device_name、weight、meta的值,然后调用swift-common-ring类中,Ring类的add_dev方法实现物理节点的添加。执行dev_add方法时,设置设备id和设备权重,最后将设备加入到设备列表中。单位权重虚拟节点量计算子模块用于将各设备权重进行相加求和,根据虚拟节点总数求出单位权重的物理节点拥有的虚拟节点的数量。遍历设备列表,获取个物理节点的权重,并计算单位权重(等于设备权重除以设备容量)的虚拟节点数。虚拟节点副本迁移列表计算子模块根据各个物理节点的单位权重,将要调整的虚拟节点副本加入到迁移列表中。
有物理节点删除时,虚拟节点副本迁移列表计算模块分为:节点删除子模块、单位权重计算子模块、虚拟节点副本迁移列表计算子模块。节点删除子模块通过调用Ring类中的remove_dev方法,根据设备节点的id,从设备列表中找到该物理设备,设置该物理节点的权重为0,利用list.remove方法将设备从设备列表中移除。单位权重计算子模块的功能与节点加入时相同,可参考节点加入时,单位权重虚拟节点量计算子模块的设计和实现。
当有物理节点删除时,虚拟节点副本迁移列表计算子模块计算各个物理节点要接收的虚拟节点副本的数量。通过重写Ring类的分配函数get_part_wanted(self,actstr),使用顺序遍历设备列表,根据物理设备单位权重的虚拟节点数计算每个物理节点可接收的虚拟节点副本个数,实现为:
part_wanted=self.weight_of_one_part×dev[wlight]-len(dev_partititon_rank_list),以列表形式存储,元素类型是二元组(dev,part_wanted)。
3)虚拟节点副本调整模块
虚拟节点副本调整模块用于进行虚拟节点副本到物理节点映射关系的调整,分为节点加入和节点删除两种情况。包括单位权重访问量计算模块、虚拟节点副本调整子模块。
节点加入时,只包含虚拟节点副本调整子模块。需要调整的虚拟节点副本已经加入到虚拟节点迁移列表中,通过重写Ring类的reassign_parts(actionstr,moved_list),利用map函数遍历迁移列表moved_list(moved_list中的元素是以二元组形式存在的),确定可调整的虚拟节点副本,用enumerate函数按照先行后列的方式,顺序查找要调整的虚拟节点副本,根据加入的物理节点的权重修改映射关系。设有权重wn+1的节点Dn+1加入存储集群7中,根据权重计算出其需要分配的虚拟节点数目为结合存储节点D1,D2,D3…Dn及其权重w1,w2,w3…wn,计算出各个物理节点分别需重新分配个虚拟节点副本给Dn+1,设物理节点D1的虚拟节点排名为P11,P12,P13…P1m,依次将共N1个虚拟节点副本分配给Dn+1,对物理节点D2,D3…Dn用相同的方法处理。处理过程如图3所示。
节点删除时,虚拟节点副本调整策略设计包括两个模块,单位权重访问量排序子模块、虚拟节点副本调整子模块。前面已对物理节点拥有的虚拟节点副本按照访问次数进行了排名,将各个虚拟节点的访问次数相加求得物理节点总的访问次数,然后除以物理节点的权重,即可求得单位权重的访问量access_num_of_one_weight。由于物理节点数量有限,利用冒泡排序算法bubbleSort()按照单位权重的访问次数对物理节点进行排名。在进行访问调整时,访问量小的虚拟节点副本调整到单位权重访问量大的节点上,访问量大的虚拟节点调整到单位权重访问量小的节点上。当存储集群7中有权重wi的物理节点Di退出存储集群7集群时,设此节点所拥有的虚拟节点数为Ni,根据其余各个节点的权重计算各个存储节点6分配的虚拟节点数分别为对存储集群7中剩余节点的单位权重的虚拟节点访问次数进行计算根据单位权重的虚拟节点访问次数进行从大到小排名,物理节点序列为V1,V2,Vi…Vn,n≠i,i∈[1,n)。根据未删除(剩余)的物理节点的单位权重,依次从已删除的物理节点的虚拟节点列表中获取对应个数的虚拟节点副本,完成了调整,调整过程如图4所示。
本发明还提供了一种利用所述***基于访问次数排名的虚拟节点副本调整的方法,包括以下步骤:
利用所述虚拟节点访问次数排序模块根据用户对虚拟节点的访问记录确定虚拟节点的访问次数,根据所述访问次数的多少,对存储***中每个物理节点所属的虚拟节点进行排名;每个物理节点对应存储***中的一个设备,物理节点所属的每一个虚拟节点为一个副本,或称为虚拟节点副本;
利用所述虚拟节点副本迁移列表计算模块,当有物理节点加入所述存储***时,获取各个物理节点的权重,计算物理节点单位权重的虚拟节点数,根据各个物理节点的单位权重,将要调整的虚拟节点副本加入到一迁移列表中;当有物理节点要从所述存储***中删除或者说退出时,将对应设备从设备列表中移除,根据单位权重的虚拟节点数计算剩余每个物理节点可接收的虚拟节点副本个数;所述单位权重等于设备权重除以设备容量;
利用所述虚拟节点副本调整模块调整虚拟节点和物理节点之间的映射关系;有物理节点加入所述存储***时,根据所述迁移列表,直接修改虚拟节点到物理节点的映射表;当有物理节点要从所述存储***中删除或者说退出时,计算各个物理节点可接收的虚拟节点副本数量,并且按照物理节点的访问总数,计算单位权重的访问量,按照单位权重的访问量进行排序,依次从已删除的物理节点的虚拟节点列表中获取对应个数的虚拟节点副本分配给对应的物理节点。。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (5)
1.一种基于访问次数排名的虚拟节点副本调整***,其特征在于,包括:
虚拟节点访问次数排序模块,用于根据用户对虚拟节点的访问记录确定虚拟节点的访问次数,根据所述访问次数的多少,对存储***中每个物理节点所属的虚拟节点进行排名;每个物理节点对应存储***中的一个设备,物理节点所属的每一个虚拟节点为一个副本,或称为虚拟节点副本;
虚拟节点副本迁移列表计算模块,当有物理节点加入所述存储***时,用于获取各个物理节点的权重,计算物理节点单位权重的虚拟节点数,根据各个物理节点的单位权重,将要调整的虚拟节点副本加入到一迁移列表中;当有物理节点要从所述存储***中删除或者说退出时,用于将对应设备从设备列表中移除,根据单位权重的虚拟节点数计算剩余每个物理节点可接收的虚拟节点副本个数;所述单位权重等于设备权重除以设备容量;
虚拟节点副本调整模块,用于调整虚拟节点和物理节点之间的映射关系;有物理节点加入所述存储***时,根据所述迁移列表,直接修改虚拟节点到物理节点的映射表;当有物理节点要从所述存储***中删除或者说退出时,用于计算各个物理节点可接收的虚拟节点副本数量,并且按照物理节点的访问总数,计算单位权重的访问量,按照单位权重的访问量进行排序,依次从已删除的物理节点的虚拟节点列表中获取对应个数的虚拟节点副本分配给对应的物理节点。
2.如权利要求1所述的***,其特征在于,所述虚拟节点副本访问排序模块包括虚拟节点副本访问次数记录子模块、物理节点拥有虚拟节点副本提取子模块、虚拟节点副本访问次数排序子模块;
所述虚拟节点副本访问记录子模块用于当用户请求对象时,对虚拟节点副本的访问次数进行记录,用户读取的对象为/account/container/object,调用Ring类的get_part()方法得到对象所在的虚拟节点part,Ring类的get_node()方法返回一个虚拟节点所在物理节点,为所有设备创建一个共享字典visit_Number_Dic用来记录每个虚拟节点副本的访问次数;
物理节点拥有虚拟节点副本提取子模块用于通过先行后列的方式遍历二维数组replaica2part2dev,该二维数组存储虚拟节点到物理节点的映射关系,提取每个物理节点所属的虚拟节点副本;然后利用enumerate函数遍历一维数组partition_single_array,partition_single_array存储虚拟节点副本序号,获得虚拟节点副本所在物理节点的id,通过比较物理节点的id来判断虚拟节点副本是否属于其中一个物理节点,然后将提取出的虚拟节点副本以共享字典visit_Number_Dic的形式存储,其中值为虚拟节点副本的访问次数;
虚拟节点副本访问排序子模块用于根据虚拟节点副本的访问次数,对物理节点拥有的虚拟节点副本进行访问次数排名,将每个设备的物理节点所拥有的虚拟节点副本和访问次数存储到字典dev_access_partition_dic,利用字典dev_access_partition_dic得到保存的虚拟节点副本访问次数的列表,对虚拟节点副本访问次数列表进行排序,按照已经排序好的访问次数列表,实现对虚拟节点的排名。
3.如权利要求1所述的***,其特征在于,有物理节点加入时,所述虚拟节点副本迁移列表计算模块包括:节点加入子模块、单位权重虚拟节点量计算子模块、虚拟节点副本迁移列表计算子模块;节点加入子模块用于将物理节点加入到存储***,通过执行一命令来控制节点的加入,即:判断命令输入是否有误,利用izip和islice工具从命令行提出设备的相关信息,然后实现物理节点的添加,添加时,设置设备id和设备权重,最后将设备加入到设备列表中;单位权重虚拟节点量计算子模块用于将各设备权重进行相加求和,根据虚拟节点总数求出单位权重的物理节点拥有的虚拟节点的数量,遍历设备列表,获取个物理节点的权重,并计算单位权重的虚拟节点数;虚拟节点副本迁移列表计算子模块用于根据各个物理节点的单位权重,将要调整的虚拟节点副本加入到迁移列表中;
有物理节点删除时,虚拟节点副本迁移列表计算模块囊括:节点删除子模块、单位权重计算子模块、虚拟节点副本迁移列表计算子模块;节点删除子模块用于根据设备节点的id,从设备列表中找到该物理设备,设置该物理节点的权重为0,将设备从设备列表中移除;单位权重虚拟节点量计算子模块用于将各设备权重进行相加求和,根据虚拟节点总数求出单位权重的物理节点拥有的虚拟节点的数量,遍历设备列表,获取个物理节点的权重,并计算单位权重的虚拟节点数;所述虚拟节点副本迁移列表计算子模块用于计算各个物理节点要接收的虚拟节点副本的数量,顺序遍历设备列表,根据物理设备单位权重的虚拟节点数计算每个物理节点可接收的虚拟节点副本个数,以列表形式存储。
4.如权利要求1所述的***,其特征在于,有物理节点加入时,所述虚拟节点副本调整模块包含虚拟节点副本调整子模块,需要调整的虚拟节点副本已经加入到虚拟节点迁移列表中,利用map函数遍历迁移列表,确定可调整的虚拟节点副本,按照先行后列的方式,顺序查找要调整的虚拟节点副本,根据加入的物理节点的权重修改映射关系;设有权重wn+1的节点Dn+1加入存储***中,n为未加入时存储***中设备个数,根据权重计算出节点Dn+1需要分配的虚拟节点数目为结合存储***中已有的物理节点D1,D2,D3…Dn及其权重w1,w2,w3…wn,计算出各个物理节点分别需重新分配N1,N2,N3…Nn个虚拟节点副本给Dn+1, 设物理节点D1的虚拟节点排名为P11,P12,P13…P1m,依次将共N1个虚拟节点副本分配给Dn+1,对物理节点D2,D3…Dn用相同的方法处理;
有物理节点删除时,所述虚拟节点副本调整模块包括单位权重访问量排序子模块、虚拟节点副本调整子模块,将各个虚拟节点的访问次数相加求得物理节点总的访问次数,然后除以物理节点的权重,即可求得单位权重的访问量,由于物理节点数量有限,利用冒泡排序算法bubbleSort()按照单位权重的访问次数对物理节点进行排名,在进行访问调整时,访问量小的物理节点的虚拟节点副本调整到单位权重访问量大的物理节点上,访问量大的物理节点的虚拟节点副本调整到单位权重访问量小的物理节点上,当存储***中有权重wi的物理节点Di退出存储***时,设此物理节点Di所拥有的虚拟节点数为Ni,根据剩余各个物理节点的权重计算各个存储节点分配的虚拟节点数分别为N1,N2,N3…Nn,n≠i,根据N1,N2,N3…Nn对存储***中剩余节点的单位权重的虚拟节点访问次数进行计算,根据单位权重的虚拟节点访问次数进行从大到小排名,物理节点序列为V1,V2,Vi…Vn,n≠i,i∈[1,n),根据剩余的物理节点的单位权重,依次从已删除的物理节点的虚拟节点列表中获取对应个数的虚拟节点副本,则完成了调整。
5.一种利用权利要求1至4中任一项所述的***基于访问次数排名的虚拟节点副本调整的方法,其特征在于,包括:
利用所述虚拟节点访问次数排序模块根据用户对虚拟节点的访问记录确定虚拟节点的访问次数,根据所述访问次数的多少,对存储***中每个物理节点所属的虚拟节点进行排名;每个物理节点对应存储***中的一个设备,物理节点所属的每一个虚拟节点为一个副本,或称为虚拟节点副本;
利用所述虚拟节点副本迁移列表计算模块,当有物理节点加入所述存储***时,获取各个物理节点的权重,计算物理节点单位权重的虚拟节点数,根据各个物理节点的单位权重,将要调整的虚拟节点副本加入到一迁移列表中;当有物理节点要从所述存储***中删除或者说退出时,将对应设备从设备列表中移除,根据单位权重的虚拟节点数计算剩余每个物理节点可接收的虚拟节点副本个数;所述单位权重等于设备权重除以设备容量;
利用所述虚拟节点副本调整模块调整虚拟节点和物理节点之间的映射关系;有物理节点加入所述存储***时,根据所述迁移列表,直接修改虚拟节点到物理节点的映射表;当有物理节点要从所述存储***中删除或者说退出时,计算各个物理节点可接收的虚拟节点副本数量,并且按照物理节点的访问总数,计算单位权重的访问量,按照单位权重的访问量进行排序,依次从已删除的物理节点的虚拟节点列表中获取对应个数的虚拟节点副本分配给对应的物理节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710609966.9A CN107465729B (zh) | 2017-07-25 | 2017-07-25 | 基于访问次数排名的虚拟节点副本调整***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710609966.9A CN107465729B (zh) | 2017-07-25 | 2017-07-25 | 基于访问次数排名的虚拟节点副本调整***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107465729A true CN107465729A (zh) | 2017-12-12 |
CN107465729B CN107465729B (zh) | 2020-09-22 |
Family
ID=60546940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710609966.9A Active CN107465729B (zh) | 2017-07-25 | 2017-07-25 | 基于访问次数排名的虚拟节点副本调整***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107465729B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228106A (zh) * | 2017-12-30 | 2018-06-29 | 广东技术师范学院 | 一种成本驱动副本的自适应控制方法 |
CN109586951A (zh) * | 2018-11-07 | 2019-04-05 | 北京达佳互联信息技术有限公司 | 实施故障转移的方法、装置、电子设备及可读存储介质 |
CN110086840A (zh) * | 2018-01-26 | 2019-08-02 | 浙江宇视科技有限公司 | 图像数据存储方法、装置及计算机可读存储介质 |
WO2019170011A1 (zh) * | 2018-03-07 | 2019-09-12 | 杭州海康威视***技术有限公司 | 任务分配方法及装置、分布式存储*** |
CN111338843A (zh) * | 2018-12-19 | 2020-06-26 | ***通信集团云南有限公司 | 一种生产***的数据备份方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013387A (zh) * | 2007-02-09 | 2007-08-08 | 华中科技大学 | 基于对象存储设备的负载平衡方法 |
WO2011096865A1 (en) * | 2010-02-05 | 2011-08-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and node entity for enhancing content delivery network |
CN102457571A (zh) * | 2011-09-15 | 2012-05-16 | 中标软件有限公司 | 一种云存储中数据均衡分布方法 |
CN103139302A (zh) * | 2013-02-07 | 2013-06-05 | 浙江大学 | 考虑负载均衡的实时副本调度方法 |
CN105657064A (zh) * | 2016-03-24 | 2016-06-08 | 东南大学 | 基于虚拟节点存储优化的Swift负载均衡方法 |
-
2017
- 2017-07-25 CN CN201710609966.9A patent/CN107465729B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013387A (zh) * | 2007-02-09 | 2007-08-08 | 华中科技大学 | 基于对象存储设备的负载平衡方法 |
WO2011096865A1 (en) * | 2010-02-05 | 2011-08-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and node entity for enhancing content delivery network |
CN102457571A (zh) * | 2011-09-15 | 2012-05-16 | 中标软件有限公司 | 一种云存储中数据均衡分布方法 |
CN103139302A (zh) * | 2013-02-07 | 2013-06-05 | 浙江大学 | 考虑负载均衡的实时副本调度方法 |
CN105657064A (zh) * | 2016-03-24 | 2016-06-08 | 东南大学 | 基于虚拟节点存储优化的Swift负载均衡方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228106A (zh) * | 2017-12-30 | 2018-06-29 | 广东技术师范学院 | 一种成本驱动副本的自适应控制方法 |
CN110086840A (zh) * | 2018-01-26 | 2019-08-02 | 浙江宇视科技有限公司 | 图像数据存储方法、装置及计算机可读存储介质 |
WO2019170011A1 (zh) * | 2018-03-07 | 2019-09-12 | 杭州海康威视***技术有限公司 | 任务分配方法及装置、分布式存储*** |
CN109586951A (zh) * | 2018-11-07 | 2019-04-05 | 北京达佳互联信息技术有限公司 | 实施故障转移的方法、装置、电子设备及可读存储介质 |
CN111338843A (zh) * | 2018-12-19 | 2020-06-26 | ***通信集团云南有限公司 | 一种生产***的数据备份方法及装置 |
CN111338843B (zh) * | 2018-12-19 | 2023-08-15 | ***通信集团云南有限公司 | 一种生产***的数据备份方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107465729B (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107465729A (zh) | 基于访问次数排名的虚拟节点副本调整***及方法 | |
CN103064890B (zh) | 一种gps海量数据处理方法 | |
CN105045877B (zh) | 数据库数据分片存储方法和装置、数据查询方法和装置 | |
CN106294352B (zh) | 一种文件处理方法、装置和文件*** | |
US7599910B1 (en) | Method and system of database divisional management for parallel database system | |
CN103473239B (zh) | 一种非关系型数据库数据更新方法和装置 | |
CN103902735B (zh) | 面向大规模集群消重的应用感知数据路由方法及*** | |
RU2675054C2 (ru) | Балансировка нагрузки для больших баз данных в оперативной памяти | |
CN106528683B (zh) | 一种基于索引分片均衡的大数据云搜索***及其方法 | |
CN104111936B (zh) | 数据查询方法和*** | |
EP1564638A1 (en) | A method of reassigning objects to processing units | |
CN106095863B (zh) | 一种多维度数据查询和存储***和方法 | |
CN102722553A (zh) | 基于用户日志分析的分布式倒排索引组织方法 | |
US7725900B2 (en) | Method of assigning objects to processing units | |
CN108897808A (zh) | 一种在云存储***中进行数据存储的方法及*** | |
EP4075295A1 (en) | System and method for structuring and accessing tenant data in a hierarchical | |
CN103607418B (zh) | 基于云服务数据特征的大规模数据分割***及分割方法 | |
CN107590257A (zh) | 一种数据库管理方法及装置 | |
CN106960020A (zh) | 一种创建索引表的方法及设备 | |
CN107203623B (zh) | 网络爬虫***的负载均衡调节方法 | |
Murat Afsar et al. | Machine reassignment problem: the ROADEF/EURO challenge 2012 | |
DE60319003T2 (de) | Verfahren zur Neuverteilung von Objekten an Recheneinheiten | |
CN103036796B (zh) | 路由信息更新方法及装置 | |
CN104679904A (zh) | 一种路网中位置点查询方法及装置 | |
CN105120008B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |