一种负载均衡方法与系统的制作方法

文档序号:9436174阅读:492来源:国知局
一种负载均衡方法与系统的制作方法
【技术领域】
[0001]本发明涉及分布式对象存储系统领域,特别是涉及一种负载均衡方法与系统。
【背景技术】
[0002]随着网络应用的迅速发展,网络信息数据量越来越大,PB级的海量数据存储变得越来越重要。传统意义的文件系统已不能满足现有应用的大容量、高可靠性、高性能等要求,为满足这些新要求,新的分布式对象存储系统应用得到了广泛的重视和应用。
[0003]在基于两级哈希的分布式对象存储系统中,采用哈希和一致性哈希的两级哈希算法实现对象的定位,即对于给定的对象,通过其对象名称的哈希结果确定其所在的对象存储设备。这种方法不需要查询操作,也没有单点瓶颈,因此具备良好的横向扩展特性。
[0004]但是随着硬盘技术的飞速发展,硬盘容量不断取得突破。目前市场上3TB、4TB硬盘比比皆是,容量较大且价格实惠。甚至在2014年,全球机械硬盘生厂商美国希捷连续推出了 6TB、8TB企业级机械硬盘,成功刷新全球机械硬盘容量之最。因此现实的很多分布式对象存储系统的应用场景中,部署着为数不多的存储节点。
[0005]基于两级哈希的对象存储数据分布机制能够很好地解决存储对象到存储节点的分布,及存储节点发生故障时存储对象的重新分布问题。但是两级哈希算法并不是绝对的负载均衡,当存储节点较少,且系统容量大量使用后,负载的不均衡性会逐渐的暴露出来。特别是在整个存储系统的存储容量接近但未达到上限的时候,由于负载的不均衡性,可能存在部分对象存储设备的空间占用率特别高。由于程序设计,个别满载的对象存储设备就会导致整个存储系统的剩余部分空间不可用,用户体验较差。

【发明内容】

[0006]有鉴于此,本发明的主要目的在于提供一种负载均衡方法与系统,可以更均衡地负载存储对象到各存储节点。
[0007]为实现上述目的,本发明提供了一种负载均衡方法,将各物理存储节点使用预设的哈希函数进行计算一个哈希值,根据各所述哈希值分别确定各所述物理存储节点在哈希环上的位置;
[0008]为每个所述物理存储节点分别增加预设数量的虚拟存储节点;
[0009]根据每个所述物理存储节点对应的虚拟存储节点数量计算对应数量个哈希值,每个所述物理存储节点对应的各哈希值分别确定各虚拟存储节点的在哈希环上的位置,并将每个所述物理存储节点对应的虚拟存储节点存放至哈希环上的对应位置;
[0010]将各虚拟存储节点映射到对应的物理存储节点。
[0011]优选地,将各虚拟存储节点映射到对应的物理存储节点后还包括:
[0012]当对各目标存储对象进行存储时,绕所述哈希环轮询,定位到各所述物理存储节点对应的各所述虚拟存储节点,将所述各目标存储对象均衡存储至各所述物理存储节点对应的各所述虚拟存储节点中。
[0013]优选地,将各物理存储节点使用预设的哈希函数进行计算一个哈希值包括:
[0014]根据所述物理存储节点的IP或主机名作为关键字进行一次哈希,计算一个哈希值。
[0015]优选地,将各物理存储节点使用预设的哈希函数进行计算一个哈希值之前还包括:
[0016]将哈希值空间组织成哈希环。
[0017]本发明还提供了一种负载均衡系统,包括:
[0018]物理节点位置确定模块,用于将各物理存储节点使用预设的哈希函数进行计算一个哈希值,根据各所述哈希值分别确定各所述物理存储节点在哈希环上的位置;
[0019]虚拟节点增加模块,为每个所述物理存储节点分别增加预设数量的虚拟存储节占.V,
[0020]虚拟节点位置确定模块,根据每个所述物理存储节点对应的虚拟存储节点数量计算对应数量个哈希值,每个所述物理存储节点对应的各哈希值分别确定各虚拟存储节点的在哈希环上的位置,并将每个所述物理存储节点对应的虚拟存储节点存放至哈希环上的对应位置;
[0021 ] 映射模块,用于将各虚拟存储节点映射到对应的物理存储节点。
[0022]优选地,所述系统还包括:
[0023]负载均衡模块,用于当对各目标存储对象进行存储时,绕所述哈希环轮询,定位到各所述物理存储节点对应的各所述虚拟存储节点,将所述各目标存储对象均衡存储至各所述物理存储节点对应的各所述虚拟存储节点中。
[0024]优选地,所述系统还包括:
[0025]哈希环生成模块,用于将哈希值空间组织成哈希环。
[0026]应用本发明提供的一种负载均衡方法与系统,将各物理存储节点使用预设的哈希函数进行计算一个哈希值,根据各所述哈希值分别确定各所述物理存储节点在哈希环上的位置,为每个所述物理存储节点分别增加预设数量的虚拟存储节点,根据每个所述物理存储节点对应的虚拟存储节点数量计算对应数量个哈希值,每个所述物理存储节点对应的各哈希值分别确定各虚拟存储节点的在哈希环上的位置,并将每个所述物理存储节点对应的虚拟存储节点存放至哈希环上的对应位置,将各虚拟存储节点映射到对应的物理存储节点,通过为物理将存储节点增加对应的虚拟存储节点对存储对象进行存储,增加虚拟存储节点到物理存储节点的映射,能够更加均衡地负载存储对象到各个存储节点,降低故障恢复过程中,存储对象重新定位的运算量。
【附图说明】
[0027]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0028]图1为本发明一种负载均衡方法一实施例的流程图;
[0029]图2为本发明一种负载均衡方法的原理示意图;
[0030]图3为本发明一种负载均衡方法的又一原理示意图;
[0031]图4为本发明一种负载均衡方法又一实施例的流程图;
[0032]图5为本发明一种负载均衡系统一实施例的结构示意图;
[0033]图6为本发明一种负载均衡系统又一实施例的结构示意图。
【具体实施方式】
[0034]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035]本发明提供了一种负载均衡方法,在分布式对象存储系统中,两级哈希算法可以高效地解决如何确定某个存储对象应该分配到分布式存储系统中的哪一个存储节点的问题。在建立存储对象与存储节点之间映射关系的过程中,引入了一个中间层,称之为放置组。这样将原本存储对象-存储节点之间的映射关系拆分为两级映射关系:存储对象-放置组之间的映射关系和放置组-存储节点之间的映射关系。其中前者使用简单的哈希算法,后者使用一致性哈希算法。这样就建立了存储对象与存储节点之间的两级哈希关系。
[0036]图1示出了本发明负载均衡方法一个实施例的流程图,对放置组-存储节点之间的一致性哈希算法进行优化,包括:
[0037]步骤SlOl:将各物理存储节点使用预设的哈希函数进行计算一个哈希值,根据各所述哈希值分别确定各所述物理存储节点在哈希环上的位置;
[0038]—致性哈希将整个哈希值空间组织成一个虚拟的圆环,假设使用哈希函数md5的值空间为0-232-1 ( 一般表示为一个32位的16进制数)整个空间按顺时针方向组织。O和232-1在零点中方向重合。
[0039]将存储系统中的各个存储节点使用哈希函数md5进行一个哈希,具体可以选择存储节点的IP或主机名作为关键字进行哈希,这样每个节点就能确定其在哈希环上的位置,这里假设分布式对象存储系统中有两个存储节点:Nodel和Node2,将这两个存储节点使用主机名哈希后在环空间的位置,如图2所示。
[0040]步骤S102:为每个所述物理存储节点分别增加预设数量的虚拟存储节点;
[0041]增加虚拟存储节点。
[0042]步骤S103:根据每个所述物理存储节点对应的虚拟存储节点数量计算对应数量个哈希值,每个所述物理存储节点对应的各哈希值分别确定各虚拟存储节点的在哈希环上的位置,并将每个所述物理存储节点对应的虚拟存储节点存放至哈希环上的对应位置;
[0043]为每个物理存储节点分别计算多个哈希值,每个计算结果位置都放置一个存储节点,这些节点称为虚拟存储节点。具体做法是在物理存储节点的主机名后面增加编号来实现。例如上面的情况,我们为Nodel和Node2分别计算出四个虚拟存储节点,于是可以分别计 #“Nodel#l”、“Nodel#2”、“Nodel#3”、
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1