一种基于负载均衡的虚拟资产数据存储方法

文档序号:10666421阅读:301来源:国知局
一种基于负载均衡的虚拟资产数据存储方法
【专利摘要】本发明公开一种基于负载均衡的虚拟资产数据存储方法,主要包括数据初始存储征途设计、数据存储和数据重分布,数据存储后,根据系统负载情况决定是否对系统的数据进行重分布。数据重分布包括设置系统负载标准差阀值并计算当前系统负载标准差,比较前述两者的大小,进行数据重分布算法及数据读取等步骤。本发明考虑了机器性能,预测了数据所需的负载,并将相关的处理分布方法应用到了虚拟资产海量信息的存储当中,数据的迁移只发生在相邻节点之间,在计算量较小的情况下使系统能够达到动态负载均衡,适用于海量多结构虚拟资产数据管理系统中数据的存储。
【专利说明】
一种基于负载均衡的虚拟资产数据存储方法
技术领域
[0001] 本发明属互联网技术领域,具体涉及一种基于负载均衡的虚拟资产数据存储方 法。
【背景技术】
[0002] 虚拟资产是指在网络世界中存在的具有竞争性、持久性以及可以交换或者买卖的 物品,包括网上银行、网络帐号、网游装备武器、虚拟货币等。
[0003] 目前,我国已经开展了基于eID的网域空间虚拟资产管理与保全技术研究,以实 现对虚拟资产的规范统一管理。海量多结构虚拟资产数据数据量大,增长快,如何对其进行 高效的分布式存储是一个需要迫切解决的问题,系统节点是否负载均衡、数据加载效率、数 据查询效率等都是衡量一个分布式系统性能的重要指标。
[0004] 文献2中描述的一致性hash算法是一种特殊的hash算法,当调整hash表大小时, 平均只有k/n个数据需要被重新映射,其中k是数据量的大小,η是缓冲的大小。相对地, 在大多数其它hash表中,缓冲数组的变化基本上导致其中所有数据都需要重新映射。
[0005] 文献3中描述的分布式一致性hash算法是在一致性hash算法的基础之上增加了 虚拟节点的考虑,其目的就是把hash的结果尽可能平均地分布到所有的缓冲中去,这样可 以使得所有的缓冲空间都得到利用。
[0006] 文献4中考虑了机器性能,唯一标识相关,平台相关的处理分布方法应用到了虚 拟资产海量信息的存储当中,大大地降低了查询的时间,提高了查询效率。
[0007] 然而,文献2的方法在处理数据分布式时会导致机器扩展性发生严重缺陷,当增 加或者删除机器的时候,仍有多数数据需要重新映射,计算量很大。文献3的方法可以很好 地减少计算量,但是它没有考虑机器之间的差异,过分地平均可能导致系统的延迟,前述两 种方法都没有考虑到系统的动态负载均衡。文献4的方法可以基本满足虚拟资产的数据存 储要求,但却不能解决系统运行过程中的负载均衡问题。
[0008] 文南犬 I :JiaKui Zhao, PingFei Zhu, LiangHuai, Yang. Effective Data Localization Using Consistent Hashing in Cloud Time-Series Databases [J]. Applied Mechanics and Materials, 2013, 347:2246-2251
[0009] 文献2 :-致性哈希改进[EB/0L]·:
[0010] http://blog.163.eom/lin_guoqian@126/blog/stat ic/1693687432012151010409/.
[0011] 文献3:邓璐,贾焰,李树栋等,专利处理节点计算能力感知的虚拟资产数据划分 方法。
[0012] 文献4 :中国专利申请公开,CN104112025A。

【发明内容】

[0013] 针对以上问题,本发明提供一种基于负载均衡的虚拟资产数据存储方法,该方法 是对文献4的扩充,适用于海量多结构虚拟资产数据管理系统中数据的存储。
[0014] 本发明的技术方案如下:
[0015] -种基于负载均衡的虚拟资产数据存储方法,主要包括以下步骤:
[0016] (1)数据初始存储征途设计;
[0017] ⑵数据存储;
[0018] (3)数据重分布:数据存储后,根据系统负载情况决定是否对系统的数据进行重 分布。
[0019] 进一步的,在步骤(1)中还包括以下步骤:
[0020] 1)通过加权改进hash算法来确定新数据所属的机器节点,所述的加权改进hash 算法主要包括机器间的处理和机器内部的处理。机器间的处理为在分布式一致性hash算 法的基础之上,加入权值Q1 = Q*a 7A,其中A表示所有机器节点实际的资源总数,ai表示机 器节点i资源能力,Qi表示节点机器i实际存储的数据量,Q表示总的数据量。机器内部的 处理为根据划分的目的,设定数据的相关属性,在同一机器节点内存放具有相关属性的数 据;将具有相同标识属性的虚拟资产数据平台邻近存放。
[0021] 2)根据用户所在地这个属性来确定该数据在此机器节点内的粗略位置,
[0022] 3)根据相似资产这个属性来确定该用户数据在此所在地属性中的准确存储位置, 即最终位置。
[0023] 进一步的,在步骤(3)中还包括以下步骤:
[0024] 1)设置系统负载标准差阀值并计算当前系统负载标准差,
[0025] 2)比较系统负载标准差阀值与系统负载标准差的大小,
[0026] 3)系统负载标准差阀值大于系统负载标准差时,结束数据重分布算法,
[0027] 4)系统负载标准差阀值小于或等于系统负载标准差时,执行数据重分布算法重新 计算数据所需负载及节点位置,根据一致性hash规则和重新计算结果迀移相应数据并更 新节点位置表。
[0028] 其中,所述的数据重分布算法的基本描述为:
[0029] 输入:Hash 环;
[0030] 输出:节点位置表;
[0031] 1:设置系统负载标准差的阈值σ、
[0032] 2:计算当前系统的负载标准差〇 ;
[0033] 3: if σ > σ *then
[0034] 4:将节点位置表中节点n的位置设为232-1 ;
[0035] 5:f or每个数据对象i do
[0036] 6: if .泛.? then//;^表示数据对象i所需资源,1|表示节点k的处理能力,k初 始化为1 ;
[0037] 7:将节点k在hash环上的的位置设置成为数据对象(i-Ι)的位置;
[0038] 8: k++ ;
[0039] 9: else
[0040] 10:数据对象i迀移至节点k ;
[0041] 11: end if
[0042] 12: end for
[0043] 13:return新的节点位置表;
[0044] 14: end if
[0045] 15:return当前节点位置表;
[0046] 进一步的,所述的步骤4)中还包括运行完数据重分布算法后的数据读取步骤,所 述的数据读取步骤包括输入所需数据的key ;通过hash函数计算出该数据在hash环上的 位置P ;查找节点位置表,将节点位置不小于P的节点存入数组connodes □并从小到大排 序;将读写命令发送至节点connodes[0]。
[0047] 节点处理能力:在实际应用中影响节点负载的因素有很多,例如节点CPU,内存 (RAM),存储容量以及网络带宽等。本专利的适用场景中假设节点的负载仅与CPU,内存和存 储容量相关。节点负载的具体计算方式并不是本专利的重点,因此为了简化计算,将节点处 理能力1表示成与节点CPU,内存和存储容量相关的函数,如公式:
[0048] I = f ( ω cpu,ω _,ω s)
[0049] 数据所需资源:数据对象的大小,数据块的访问频率将决定其所需的资源多少,在 这里遵循两条规则,1,越是经常被访问的数据块越有可能在将来被访问;2,最新加入的数 据块在将来容易被访问。因此,为了简化计算,将数据块所需的资源r表示成该数据块历史 访问频率与其加入数据库时间的函数,如公式:r = g(cos,cof,cot)
[0050] 系统负载阈值:通过各个节点负载的标准差来表示当前系统的负载均衡情况,设 定一个阈值,当各个节点的负载标准差大于给定阈值时,说明此时系统负载不均衡,需要对 数据进行重分布,负载标准差σ计算如下:
[0051]
[0052]
[0053]
[0054]
[0055] R表示系统所有数据所需的总资源,L表示系统所有节点的总处理能力。
[0056] 节点位置表:不同于一致性hash算法,节点的位置并不是通过hash函数计算所 得,而是根据数据的分配位置进行指定。系统需要维护一张节点位置表,表中包含了每个节 点的唯一标识(ip)和其他hash环上的位置(0-2~32-1),如表1 :
[0057] 表1节点位置表

[0059] 本发明的有益效采是:与现W扠 木相比,本友明考虑J机器性能,预测了数据所需 的负载,并将相关的处理分布方法应用到了虚拟资产海量信息的存储当中,数据的迀移只 发生在相邻节点之间,在计算量较小的情况下使系统能够达到动态负载均衡。
【附图说明】
[0060] 图1为本发明的数据重分布流程图。
[0061] 图2为本发明的数据读取流程图。
[0062] 图3为本发明的模拟系统A与模拟系统B的系统负载标准差对比图。
[0063] 图4为本发明的模拟系统B与模拟系统C的系统负载标准差对比图。
[0064] 图5为本发明的系统D节点在hash环上的分布图。
[0065] 图6为本发明的硬件运行环境示意图。
【具体实施方式】
[0066] 为了便于理解本发明,以下结合说明书附图和实施例对本发明作进一步说明。
[0067] 本发明提供一种基于负载均衡的虚拟资产数据存储方法,主要包括数据初始存储 征途设计、数据存储、数据重分布。数据按照文献4中所用方法进行数据初始存储征途设 计、数据存储后,根据系统负载情况决定是否对系统的数据进行重分配。进行数据重分配的 步骤为:
[0068] 1)设置系统负载标准差阀值并计算当前系统负载标准差,
[0069] 2)比较系统负载标准差阀值与系统负载标准差的大小,
[0070] 3)系统负载标准差阀值大于系统负载标准差时,结束数据重分布算法,
[0071] 4)系统负载标准差阀值小于或等于系统负载标准差时,执行数据重分布算法重新 计算数据所需负载及节点位置,根据一致性hash规则和重新计算结果迀移相应数据并更 新节点位置表。
[0072] 数据重分布算法的基本描述为:
[0073] 输入:Hash 环。
[0074] 输出:节点位置表。
[0075] 1:设置系统负载标准差的阈值〇、
[0076] 2:计算当前系统的负载标准差〇 ;
[0077] 3:if σ > σ *then
[0078] 4:将节点位置表中节点η的位置设为2~32-l ;
[0079] 5: f or每个数据对象i do
[0080] 6: if 2發、then/Vri表示数据对象i所需资源,1|表示节点k的处理能力,k 初始化为1 ;
[0081] 7:将节点k在hash环上的的位置设置成为数据对象(i-1)的位置;
[0082] 8: k++ ;
[0083] 9: else
[0084] 10:数据对象i迀移至节点k ;
[0085] 11: end if
[0086] 12: end for
[0087] 13:return新的节点位置表;
[0088] 14: end if
[0089] 15:return当前节点位置表;
[0090] 在上述步骤4)中运行完数据重分配算法后,进行数据读取步骤,所述的数据读取 步骤包括输入所需数据的key ;通过hash函数计算出该数据在hash环上的位置p ;查找节 点位置表,将那些节点位置不小于P的节点存入数组connodes □并从小到大排序;将读写 命令发送至节点connodes[0]。
[0091] 本发明的开发环境:Linux操作系统的X86平台,JDKL 7,采用java语言编写,数 据服务器需要安装Cassandral. 0或更高版本的数据库软件,为系统提供数据支持。
[0092] 本发明的运行环境:服务器端运行于安装有Linux操作系统的X86平台,JDKL 7 或以上版本的多个机器节点,客户端运行于普通个人PC。
[0093] 本发明的硬件信息:由多个安装有Linux操作系统和JDK 1. 7以上版本的机器节 点和普通个人PC组成。
[0094] 以下为本发明典型的实施方式:
[0095] 实施例1 :
[0096] 以下通过模拟实验来说明数据重分布算法的负载均衡效果。模拟实验设置三个模 拟系统A,B和C,模拟系统A不采用数据重分布算法,模拟系统B和C采用,模拟系统B的 负载阈值设置为0.4,模拟系统C设置为0.5。分别对三个模拟系统进行相同的操作。模拟 实际情况,操作分为对数据和对节点两种,对数据的操作为随机增加或减少100~200条记 录,对节点的操作为随机增加或删除1~2个节点。对节点和数据的操作穿插进行,共进行 100次,两种操作数量比例为9:1。图3是模拟系统A与模拟系统B的对比,图4是模拟系 统B与模拟系统C的对比,通过对比发现使用了重分布算法能够很好地均衡系统负载,不同 的负载均衡阈值会有不同的效果,阈值越小,数据迀移次数越多,但是均衡效果更好。
[0097] 实施例2 :
[0098] 为了简化计算,更清晰的说明实施方案,先做如下假设:
[0099] 假设hash环上的位置取值范围为0~20 ;
[0100] 假设系统D此时有3个节点NI, N2, N3,节点位置表如表1 ;
[0101] 假设系统D此时有10个数据对象datal,data2,....... . datalO ;他们在hash环 上的分布如图5所示;
[0102] 假设每个数据对象所需的资源r相同;
[0103] 假设每个节点的处理能力1相同;
[0104] 假设该系统D的负载标准差阈值设置为0. 5.
[0105] 表2系统Nl、N2、N3的节点位置表
[0106]
[0107] 根据映射规则可知,节点存储数据对家结果如卜:
[0108] 表3系统Nl、N2、N3的存储结果表
L0110J 此时节点Nl存放/ 6个数据对家,而节点N2存放/ 3个,节点N3只存放了 一个, 由于假设可知,此时的系统D各个节点的负载极不均衡,通过公式可以计算出此时的负载 均衡标准差σ,计算过程如下:
[0111]
[0112]
[0113]
[0114]
[0115]
[0116] 此时的负载标注差σ大于给定的0.5,因此需要对系统D进行负载均衡。调用数 据重分布算法得到新的节点位置表如下表
[0117] 表4系统Nl、Ν2、Ν3的新的节点位置表

[0119] 此时数据对象与节点的映射方式如下表:
[0120] 表5系统Nl、N2、N3的数据与节点映射规则表
[0122] 此时按照新的节点映射规则迀移数据即可。迀移之后各个节点的负载得到了均 衡。
[0123] 实施例3 :
[0124] 本发明的硬件运行环境由服务器端和客户端构成,服务器端运行于安装有Linux 操作系统的X86平台,JDKL 7或以上版本的多个机器节点,客户端运行于普通个人PC。以 5台节点服务器为例,其硬件运行环境如图6所示,具体参数如下:
[0125] 服务器端:由5台节点服务器组成;
[0126] 5台节点服务器配置如下:
[0127] CPU :Intel Xeon E3_1231v3,4 核,3. 4GHz
[0128] 内存:16G
[0129] 硬盘:1T*2
[0130] 客户端:由普通个人PC构成。
[0131] 与现有技术相比,本专利申请考虑了机器性能,预测了数据所需的负载,并将相关 的处理分布方法应用到了虚拟资产海量信息的存储当中,数据的迀移只发生在相邻节点之 间,在计算量较小的情况下使系统能够达到动态负载均衡。
[0132] 以上是对本发明进行了示例性的描述,显然本发明的实现并不受上述方式的限 制,只要采用了本发明技术方案进行的各种改进,或未经改进将本发明的构思和技术方案 直接应用于其它场合的,均在本发明的保护范围内。
【主权项】
1. 一种基于负载均衡的虚拟资产数据存储方法,包括数据初始存储征途设计、数据存 储、数据重分布,其特征在于,所述的数据重分布为数据存储后,根据系统负载情况决定是 否对系统的数据进行重分布。2. 根据权利要求1所述的一种基于负载均衡的虚拟资产数据存储方法,其特征在于, 所述的数据重分布包括W下步骤: 步骤一:设置系统负载标准差阀值并计算当前系统负载标准差; 步骤二:比较系统负载标准差阀值与系统负载标准差的大小; 步骤=:系统负载标准差阀值大于系统负载标准差,结束数据重分布算法; 步骤四:系统负载标准差阀值小于或等于系统负载标准差,执行数据重分布算法重新 计算数据所需负载及节点位置,根据一致性hash规则和重新计算结果迁移相应数据并更 新节点位置表。3. 根据权利要求2所述的一种基于负载均衡的虚拟资产数据存储方法,其特征在于, 所述的步骤四中数据重分布算法的基本描述为: 输入化sh环; 输出:节点位置表; (1) :设置系统负载标准差的阔值曰% (2) :计算当前系统的负载标准差曰; 做:if O〉O *then (4) :将节点位置表中节点n的位置设为2~32-1 ; (5) :fo;r每个数据对象ido 化):if表示数据对象i所需资源,1!,表示节点k的处理能力,k 初始化为1 ; (7):将节点k在hash环上的的位置设置成为数据对象(i-1)的位置; 做:k++ ; (9) :else (10) :数据对象i迁移至节点k ; (11) :end if (12) :end for (13) :reUi;rn新的节点位置表; (14) :end if (15) :return当前节点位置表。4. 根据权利要求2、3所述的一种基于负载均衡的虚拟资产数据存储方法,其特征在 于,所述的步骤四中还包括运行完数据重分布算法后的数据读取步骤。5. 根据权利要求2-4所述的一种基于负载均衡的虚拟资产数据存储方法,其特征在 于,所述的步骤四中数据读取步骤还包括W下步骤: 步骤A :输入所需数据的key ; 步骤B :通过hash函数计算出该数据在hash环上的位置P ; 步骤C :查找节点位置表,将节点位置不小于P的节点存入数组connodes □并从小到 大排序; 步骤D :将读写命令发送至节点connodes [0]。
【文档编号】H04L29/08GK106034144SQ201510109280
【公开日】2016年10月19日
【申请日】2015年3月12日
【发明人】傅翔, 贾焰, 韩伟红, 李树栋, 李爱平, 周斌, 杨树强, 黄九鸣, 朱伟辉, 李虎, 全拥, 邓璐, 刘斐
【申请人】中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1