张 皓,李敬伟,海本斋
(1.河南工学院计算机科学与技术系,河南 新乡 453000;2.河南师范大学计算机与信息工程学院,河南 新乡 453007)
云计算是一种利用互连网和中央远程服务器来为用户提供适应性服务的技术。在云中,服务通过具有“XaaS”的高速互联网按需求发送给外部用户,其中的“X”作为服务是一种计算结构,被分解为3 部分:“基础设施”、“平台”和“应用”。它以最便宜的价格、最强大的处理器给客户提供最适合的服务,以满足其业务功能,并提供良好的服务质量如可用性、可扩展性和性能。如果能够满足全部业务需求但却不能满足性能质量,则将导致软件应用终端用户的更大不满。在引入云之后,客户选择基于云的基础设施,以提供高性能软件应用的基础设施需求。
数据复制是在地理分布的站点上创建数据(文件、数据库等)的相同复制品的一种技术,每一份复制品称为一个副本[1]。数据复制已广泛应用于许多领域,如互联网、对等系统和分布式数据库等[2-4]。关于复制策略,副本优化是软件系统的性能增强技术之一。为了设计高效的动态数据复制方案,关键步骤是对数据访问模式的分析[5-6]。在云计算中,复制是通过在不同节点上提供给用户一个特定服务的多个副本,用于减少用户等待时间、增加数据可用性和最小化云带宽消耗;在复制环境中,文件或片段的副本被托管在多个系统或站点中。当副本数量增加时,它通过改进局部性来提高系统性能;然而,它还包括额外的数据传输,以保持副本更新来获得数据的一致性。文献[7]讨论了P2P 复制系统,提出了动态副本分布方法,给出了副本目录的设计和副本信息的获取方法,能够获得某一逻辑资源的所有副本信息,然后根据逻辑资源的全局副本信息,对访问频率高且平均响应时间长的数据资源进行复制,并给出副本数量的计算方法;文献[8]提出了称为最新访问最大权值的动态数据复制策略,以减少作业执行时间,找到受欢迎的文件并复制到合适的站点,以实现系统负载平衡;在文献[9]中,作者提出了动态片段分配的新框架。通过采用这种技术,在框架内找到最优分配方案,为碎片分配问题提供了有效的解决方案;文献[10]提出了一种改进的最新访问最大权值算法,与现有的8 种算法进行了比较,并改进了平均作业时间和在全部访问模式下有效的网络,特别是在不同随机文件访问模式下;文献[11-12]提出了2 种动态集中数据复制算法。算法通过创建和扩展超级数据中心到主要数据中心的副本,使得数据访问时间和网络负载最小化;文献[13]研究了云计算数据中心的数据复制技术,以使能量消耗、网络带宽和通信延迟最小化,该技术可以应用于地理上分布的数据中心,以及每个单独的数据中心内部。
为了提高云存储计算环境中软件系统的性能,本文提出了一种动态数据复制和放置算法。动态数据复制采用受欢迎程度(Popularity Degree,PD)来找到需要复制的文件,采用复制因子(Replica Factor,RF)来创建副本,最后采用一种基于可用性的放置算法将副本放置在合适的位置,即算法包括3 个阶段:1)采用PD 选择需要创建副本的文件;2)采用RF 创建副本;3)放置副本。
在云计算中,云存储被认为是一个非常重要的因素,它是一种数据远程维护、管理和备份的服务,允许用户在线存储文件,将上传的文件保存在外部服务器上,以便用户可以通过互联网从任何位置访问文件。可用性就是可操作性或可提交的运行状态。为了提高系统性能,应当增加可用性。一个系统的可用性定义为A=MTTF/(MTTF+MTTR), 其中MTTF 是业务系统的平均无故障时间(Mean Time Too Failure,MTTF),MTTR 是平均修复时间(Mean Time To Repair,MTTR)。对于云数据服务中心来说,它的架构如图1 所示,包括:1)副本管理器;2)副本选择;3)副本目录;4)调度和副本代理。
图1 云数据中心体系结构
副本管理器控制复制管理系统的整个操作。它有助于根据用户需求创建和管理副本,增加存储空间和目录,以跟踪全部副本及其位置;副本管理器保存了区域内关于数据中心和副本位置的一般信息,提供副本服务,并管理副本访问、一致性、核心副本创建、删除和身份验证;副本管理器支持云之间的数据管理和数据传输,还跟踪用户访问模式,监测数据的受欢迎程度,并根据其可用性确定是否需要本地创建;副本管理器和目录彼此同步通信,以维持成功的复制过程。
副本选择需要关于存储系统的容量和性能特征信息,副本选择是采用副本选择器来完成,它基于用户需求和在访问时间内出现的故障。通过选择合理的副本,可以改善服务响应时间,并降低服务成本;副本选择器中的缓存功能用于创建相应的服务终结点和请求副本的复制。
每个新创建的副本都登记在副本目录表中。副本目录还负责查找请求的数据,并维护区域中的用户基数、数据中心、副本的数量,以及在某时刻的请求数量和可用性。当站点每次存储一个新副本时,它就发送一个文件注册请求给副本目录,副本目录将该站点添加到站点列表并保存副本。然后由应用查询目录,以找到每个数据中心中一个特定副本位置的可用副本的位置;副本目录包含关于副本和相关副本的位置以及与这些复制的数据相关联的元数据信息。
调度代理是中央管理代理。调度器读取服务列表,并采用服务描述文件作为输入来部署每个新服务;副本代理用于管理副本文件的活动,控件将首先从用户移动到调度代理,在那里调度用户请求并将控制权传递给副本代理,指示要创建的副本文件,并将其发送给副本管理器,决定将这些副本放置在何处。
在本文提出的算法中,采用动态数据复制和放置算法来实现云存储软件系统。为了实现动态数据复制,需要解决3 个重要问题。1)哪些数据应当复制、何时复制,以减少等待时间或加快数据访问速度;2)应当创建多少合适的新副本。随着新副本数量的增加,系统维护成本将显著增加;3)新副本应当放在哪里,以满足系统任务的成功执行率和带宽消耗要求。为此,分3 个阶段实现:
1)根据PD 选择需要创建副本的文件;
2)根据RF 创建副本;
3)放置副本。
为了选择需要创建副本的文件即选择副本,通过分析访问历史确定一个受欢迎的数据文件,并对不同的访问数据设置不同的权值。基本上,越是最近被访问得多的数据,就越适合于分析,因此,就要通过给予高权值设置一个最高优先级,这可以通过计算PD 来找到它。PD 计算如下:
式中,Q1表示第1 因子,Q2表示第2 因子。Q1的计算公式如下:
式中,FA 表示在时间ti和ti+1之间的访问频率,nu表示在ti和ti+1之间唯一用户的数量,nr表示在ti和ti+1之间重复的用户数量,ts表示开始时间,tp表示当前时间。第1 个因子是通过采用访问频率和反向访问频率乘积来计算的。第2 个因子的计算公式如下:
式中,Wt是一个文件中表的总权值。第2 个因子是通过采用一个时间间隔中的访问频率和一个文件中每个表的总权值的乘积来计算的,然后求出每个间隔上得到的值的和来计算第2 个因子的值。在每个文件中有许多表,而且每个表都有权值。总的权值是一个文件中每个表的权值相加。
RF 的计算用于查找数据文件是否应当复制或创建副本。通过计算正因子(Positive Factor,PF)和负因子(Negative Factor,NF)来计算复制因子。正因子就是确定复制一个文件的重要性,计算公式如下:
式中,PDcurrent表示当前文件的受欢迎程度,PDmin表示最小受欢迎程度,PDmax表示最大受欢迎程度。计算正因子以找到复制文件的重要性,此后,必须计算每个文件的负度(Negative Degree,ND)。负度的计算是用来得到负因子(Negative Factor,NF)。一个文件的NF 表明是否一个文件不应当被复制。每个文件的ND 计算如下:
式中,M 表示一个文件的存储大小,R 表示副本的存在数量,QRT 表示查询响应时间。ND 用于计算一个文件的负因子NF。负因子的计算公式如下:
式中,NDcurrent表示当前文件的负度值,NDmin表示最小负度值,NDmax表示最大负度值。
然后就可以用下面的公式计算复制因子:
式中,γ 和α 是常数值,它们是通过检查不同值的性能而指定为1。
随后通过下列条件生成副本数量Nr:式中,RFt表示在一个时间间隔t 的复制因子,RFt-1表示在前一个时间间隔t-1 的复制因子。它把复制因子和阈值进行比较来决定是否为特定文件创建副本。如果副本大于阈值,则将创建副本,在分配节点时将考虑这些副本。
放置策略要考虑所需的可用性、系统中节点的稳定性和故障,需要一个位置来放置从前面步骤得到的副本。对此,首先必须考虑数据中心中的节点列表,然后采用下面所述的分类标准把这些节点按降序安排。实践表明,在同一节点放置同一数据的多个副本并不能提高可用性或容错性。考虑一些节点列表并计算这些节点的可用性因子(AF),计算可用性因子以找到特定节点是否可以放置数据。节点Ni的可用性因子计算如下:
如果一个节点Ni具有好的AF,则它就具有好的稳定性STAB(Ni)和低故障率FR(Ni),稳定性的范围为在0≤STAB(Ni)≤1,节点Ni的故障率计算如下:
式中,k 是在节点Ni中数据的数量,Dij是存储在节点Ni中的数据j。为了加大相同副本之间的距离,即非相似性函数,定义为:
式中,n 是一个节点,LDn是节点n 中本地数据的列表,DNn是数据中心中节点n 的全部邻居的数据列表。这里(n)就是节点n 的数据列表和它的邻居数据列表之间的数据差的大小。例如,如果(n)=0,则节点n 中的全部数据存在于邻域中。为了避免(n)=0 这种不确定的情况,根据下列标准对节点进行分类。
算法1 副本放置算法伪代码
创建一个节点的列表N_List
对列表采用式(12)按降序排列
存储数据副本在节点n 中
存储副本到列表N_List 中的第1 个节点n 中
为了对本文提出的云存储计算系统性能进行验证,采用Java(jdk1.6)来实现,安装的系统配置为:酷睿i5 处理器,3.2 GHz 时钟速率,4GB RAM。采用下页表1 所示的某医院部分病人的样本数据集,数据集包括身份识别号(ID)、性别(SEX)、生日(Birthday)、描述(Description)、第1 次时间(First Date)、入院(Admission)和诊断结论(Diagnosis)。
表1 样本数据库
为了对本文提出的算法性能进行评价,将本文提出的算法和目前比较先进的技术[11-12]在系统字节有效率(SBER)和执行时间两方面性能进行比较。
首先执行本文提出的算法,生成的查询流程如图2 所示。生成的查询在数据库中进行搜索,并把查询相关结果在短时间内提供给用户。图3 和图4分别为可用性与查询数量、副本数量和可用性因子之间的关系。可见,当查询数量增加时,可用性增加,而且可用性增加时,可以增加副本数量的创建。因此,相关数据可以放在云中,而且访问查询相关数据所需的时间可以快速而有效地完成。
图2 查询生成流程
图3 可用性与查询数量的关系
图4 副本数量与可用性的关系
图5 SBER 性能比较
图6 执行时间性能比较
图5 所示为本文提出的算法与现有技术[11-12]在SBER 性能方面得到的比较结果。从图5 可见,在每个时间间隔,本文提出策略得到的SBER 值要高于现有技术[11-12],而且基本不随时间间隔的增加而改变,有很好的稳定性。这主要是由于本文的算法是采用可用性因子和分类标准计算并找到被创建的副本数量,然后把副本放置在相应的节点,节点基于又节点的可用性来安排,从而减少了网络中的过载,提高了带宽利用率。
图6 所示为本文提出的算法与现有技术[11-12]在查询性能方面得到的比较结果。从图6 可见,当查询数量增加时,不同技术的执行时间都会增加,但相比于现有技术[11-12]来说,本文算法的执行时间随查询数量增加要低得多,执行每个查询量所需的时间更少,分别比文献[11]和文献[12]平均低43%和49%,提高了系统性能。这主要是由于在本文提出的算法中,找到需要复制的数据,然后采用受欢迎程度和复制因子来创建副本,这有助于减少等待时间,加快进程,减少由查询执行过程所花费的时间。
为了提高云计算存储系统的性能,本文提出了一种基于3 阶段的动态数据复制策略和放置算法。在该技术中,使用受欢迎程度和复制因子来识别要复制的文件和复制文件的数量,并通过向用户提供相同服务的不同副本来增加数据可用性;然后采用一种放置算法,将副本放置在相应的节点或标识的系统中,提高了系统的性能而没有系统过载节点的副本放置,从而改善云系统任务的成功执行率,并最大限度地减少云系统带宽消耗。