一种云计算中基于人工势场的增量检查点容错方法
技术领域
本发明属于云计算领域,尤其涉及一种基于人工势场的增量检查点容错方法。
背景技术
随着大数据时代的到来,数据的处理能力已经愈发成为用户的关注焦点。相较于传统的集群技术,云计算的按需提供服务,可靠弹性服务引起了全世界的瞩目。虽然云计算有很多的优点,是迎合网络时代发展孕育出来的技术,但是由于构建云计算平台的基础组件的多样性、任务调度异常等种种原因,云计算总是出现种种故障,这是无法避免的。这些故障通常会导致提交的任务无法按照预期进行交付,甚至可能造成用户的经济损失,这是用户无法容忍的。由于动态服务架构以及基础设备的复杂特性,容错成为云计算中不可忽视的问题。
基于云计算的可靠弹性服务特性,云计算得到广泛关注,但是故障的处理能力并没有得到妥善的解决。优质的服务提供策略是云计算领域研究的主要课题。检查点技术是云计算中最常用的容错技术,常常作为云计算中的容错资源调度的依据,然而现阶段研究内容中冗余资源的布局是静态且有预设条件的,如果任务执行过程中的内存占用量发生变化或者网络可达性变化,均会导致故障的概率分布发生变化,检查点成本也可能会在执行期间发生变化。为了解决上述技术问题,首先针对容错策略对现阶段的基于检查点的容错策略进行分析。一方面,检查点设置一般都是基于单结构检查点的设置,不能有效适用于不同故障。另一方面,针对检查点布局问题,现阶段往往采用随机存储的方式进行检查点布局策略,不能有效利用资源,相关研究将有助于节省检查点恢复开销。
针对上述问题针对上述研究内容的具体研究内容如下:
1)基于任务完成时间和故障概率设计精确的检验点部署和调度模型;
2)研究检查点的文件特性,提出基于人工势能场的检查点文件存储策略;
3)针对检查点文件安全问题,提出基于非对称加密算法的检查点文件加密策略;
发明内容
本发明旨在解决以上现有技术的问题。提出了一种云计算中基于人工势场的增量检查点容错方法。本发明的技术方案如下:
一种云计算中基于人工势场的增量检查点容错方法,其包括以下步骤:
S1.根据不同故障概率将检查点类型设置为存储在远程节点的全局检查点、存储在本地设备全局检查单和存储在内存的增量检查点三类检查点;
S2.构建检查点的开销模型,以最小化预期检查点开销为目标,计算各类型检查点频率函数;
S3.通过建立不同影响因素下的引力势场、斥力势场以及总势场叠加模型,把检验点布局定位问题转化为在人工势场中搜索势能极值位置问题;
S4.采用栅格模型对布局检验点的环境信息进行描述,得到布局检验点的状态数字势场模型;
S5.运用连续蚁群优化算法进行求解得到最优的检查点布局结果,其中检查点文件数据上传模块和验证模块中使用了非对称加密中的哈希算法和数字签名算法,运用区块链技术思想确保检查点文件安全性。
进一步的,所述步骤S1根据不同故障概率将检查点类型设置为三种类型的检查点,存储在远程节点的全局检查点、存储在本地设备全局检查单和存储在内存的增量检查点三类检查点,分别表示为N-checkpoint,m-checkpoint和i-checkpoint,参数p
n是从N型检查点恢复的概率,并且
是设置i-checkpoint和m-checkpoint的开销的比率,u的范围是(0,1),当u=0时,表示i-checkpoint的开销O
i为0;当u=1时,表示i-checkpoint的开销O
i等于m-checkpoint的开销O
m;在这两种情况下,两级增量检查点恢复方案将退化为两级检查点恢复方案并不符合实际情况,p
n的范围是(0,1);情况,p
n=0=或p
n=1,表示系统中只发生永久性故障或仅发生瞬时故障,与实际情况不符,因此也不考虑这两种情况。
进一步的,所述步骤S2构建检查点的开销模型,以最小化预期检查点开销为目标,计算各类型检查点频率函数,具体包括:设定检查点总开销T
total=T
checkpoint+T
recovery+T
recompute,其中T
checkpoint为设置检查点的总开销,T
recovery为发生故障时从故障恢复计算时间开销,T
recomput为重新计算的时间开销,假设N-checkpoint,m-checkpoint和i-checkpoint检查点的数量分别是n、m和i,开销分别为为O
m、O
n和O
i,为确定获得检查点布局策略,设定检查点频率函数
其中t
i(i=1,2,...)是第i个检查点得位置,最终以最小化T
total为目的,得到检查点频率函数。
进一步的,通过最小化全局平均检查点开销的最佳检查点频率函数可表示为
假设N-checkpoint,m-checkpoint和i-checkpoint检查点的数量分别是n、m和i,
开销分别为为Om、On和Oi,f(t)表示故障概率函数
进一步的,所述步骤S3中,人工势能场函数模型设计如下:
S31.针对云计算节高可用性,定义引力系数,其中ξ表示目标节点对其他其他节点的引力的权力系数,若目标节点无N-checkpoint,则ξ=1,当目标节点存储过N-checkpoint,则ξ=(0.8)n其中n表示节点存储的数量;
S32定义为目标节点的资源使用相关加权函数
其中q
cpu、q
mem、q
ram分别表示目标节点的cpu使用百分比、内存使用百分比和节点存储已使用百分比,
β、η分别是q
cpu、q
mem、q
ram的权重系数且
所述
的取值范围为0.3~0.5,所述β的取值范围为0.3~0.5,所述c的取值范围为0.15~0.3,最终得到节点的势能值函数
进一步的,所述步骤S4采用栅格模型对布局检验点的环境信息进行描述,得到布局检验点的状态数字势场模型,具体包括:
.S41设LS(layout scope)为布局检查点文件在三维布局空间里的装填可行区域,其中q个节点待布局,按检查点文件要布置在LS中建立笛卡尔坐标系,以横向为X轴,纵向为Y轴;
S42以s为步长将X,Y分别进行划分,由此生成一系列栅格,每行的栅格单元数
每列的栅格单元数
x
max、y
max分别表示栅格模型中x轴最大值与y轴最大值。
S43对于节点位置,x轴表示节点的地理位置,当节点直接为直连时,x=1,其中y=Nbps,Nbps表示该节点带宽使用情况,构成A×B={(x,y)|x∈A∧y∈B}其中A为节点之间的地理分布情况,B为当前节点的带宽占用情况;
S45依据S32得到每个节点的势能场函数
根据S43构建的栅格模型将节点的势能场函数得到布局检验点的三维状态数字势场模型。其中x轴代表节点之间的物理距离,y轴代表节点的带宽占用情况,z轴表示为节点的势场值。
进一步的,所述步骤S5中运用连续蚁群优化算法进行求解得到良好的检查点布局结果,具体包括:
S51对蚁群算法参数进行初始化,包括信息素影响系数a,期望值影响系数P,蚂蚁个体数量m,信息素挥发系数P;
S52判断当前迭代次数是否达到算法设定的最大迭代次数,若达到算法设定的最大迭代次数,转到步骤S56;
S53某个蚂蚁K在自身留存的未分配的集合N中,根据算法概率公式,概率性的选择一个设备S,分配给节点i,然后蚂蚁K再次在集合N中选择一个设备S2分配给节点i2,如此一直下去,直到蚂蚁K将N个设备都分配到N个节点上去为止,然后下一个蚂蚁K+1,直到每个蚂蚁都将N个设备分配给N个节点,本次迭代结束;
S54根据本次迭代m个蚂蚁寻找出的解,找出本次迭代最优解,对本次迭代最优解按照局部最优算法处理,判断是否更新本次迭代最优解;局部最优算法将给定个数的蚂蚁随机分布在设计变量定义域内划分好的子空间里进行一定范围的局部搜索,记录具有最好评价函数值的优秀蚂蚁,并进行信息素局部更新。
S55判断是否需要更新当前全局最优解,如果更新当前全局最优解,同时也需要根据更新信息素公式,对更新后的全局最优解路径上的信息素进行更新判断是否达到最大迭代次数,如未达到,转步骤S52,如果不需要更新当前全局最优解,转到步骤2;
S56输出当前最优解,按转移概率移动各蚂蚁在不同子空间之间进行转移,并嵌入邻域搜索机制,寻找更好的解,然后按信息素更新规则进行全局更新通过不断地重复上述过程,使算法能找到问题的最优解.。
进一步的,所述检查点文件数据上传模块和验证模块中使用了非对称加密中的哈希算法和数字签名算法,运用区块链技术思想确保检查点文件安全性,具体包括:
首先使用MD5算法计算出需要上传文件的哈希值,其次系统将生成私钥,最后根据数字签名算法对系统所生成的私钥进行签名操作。将所形成的签名的数据通过P2P网络通讯技术传播至各个节点,每个节点设置记录文件,记录文件定时更新上传信息,系统每隔3分钟检测记录文件各个节点是否一致,若不一致则立即修复。
本发明的优点及有益效果如下:
通过本发明,采用增量式检查点技术,跟据故障概率函数动态自适应设置增量检查点设置间隔,构造检查点开销模型,以最小化检查点开销为目的设置检查点频率,有效减少检查点设置开销。根据网络资源与节点资源完成基于人工势场的检查点布局,动态调整检查点文件部署,减少检查点恢复开销。最后结合区块链思想提出基于非对称加密算法确保检查点文件的安全问题。本发明创新点主要在于采用多级增量式检查点策略,根据不同故障概率设置不同容错策略,有效的降低了云环境下容错系统开销,其次对检查点文件布局情况,多方面考虑节点之间资源动态变化过程,使得云环境中节点整体资源利用率的到提升,节点文件的安全性采用数字签名与哈希算法结合的思想对文件进行加密,采用区块链的思想增加记录模块,确保节点之间的上传数据一致性问题,增强了云环境中节点文件安全性。
附图说明
图1是本发明提供优选实施例云计算中基于人工势场的增量检查点容错方法流程图。
图2表示连续蚁群算法流程图
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
本发明提供的一种基于工势场的增量检查点容错方法,包括如下步骤:
第一步,根据不同故障概率将检查点类型设置为存储在远程节点的全局检查点、存储在本地设备全局检查单和存储在内存的增量检查点三类检查点,
第二步,构建检查点的开销模型,以最小化预期检查点开销为目的,计算各类型检查点频率函数
第三步,通过建立不同影响因素下的引力势场和斥力势场以及总势场叠加模型,把检验点布局定位问题转化为在人工势场中搜索势能极值位置问题。
第四步,采用栅格模型对布局检验点的环境信息进行描述,得到布局检验点的状态数字势场模型
第五步,运用连续蚁群优化算法进行求解得到良好的检查点布局结果,其中检查点文件数据上传模块和验证模块中使用了非对称加密中的哈希算法(MD5)和数字签名算法(MD5withRSA),运用区块链技术思想确保检查点文件安全性.
以下以一个具体实例对本发明进行进一步说明:
本实施实例,步骤一中根据不同故障概率将检查点类型设置为三种类型的检查点,即N-checkpoint,m-checkpoint和i-checkpoint,参数pn是从N型检查点恢复的概率,并且
是设置i-checkpoint和m-checkpoint的开销的比率。u的范围是(0,1)。当u=0时,表示i-checkpoint的开销为0;当u=1时,表示i-checkpoint的开销等于m-checkpoint的开销。在这两种情况下,两级增量检查点恢复方案将退化为两级检查点恢复方案并不符合实际情况。p
n的范围是(0,1)。情况,p
n=0=或p
n=1,表示系统中只发生永久性故障或仅发生瞬时故障,与实际情况不符,因此也不考虑这两种情况。
在本实施例,步骤二中,假设故障概率函数服从指数分布时,通过将指数分布的CDF(分布函数)数和PDF(概率密度函数)代入S26式中可得s(η)
opt=A
exp其中
根据S2可得
因此
通过归纳可得
依据不同故障概率假设永久故障的速率参数λp=10
-5和瞬时故障率参数λ
1=10
-6其他参数值有下表给出
参数 |
p<sub>n</sub> |
O<sub>m</sub> |
O<sub>n</sub> |
O<sub>i</sub> |
R<sub>m</sub> |
R<sub>n</sub> |
R<sub>i</sub> |
k |
值 |
0.05 |
0.1 |
1.0 |
0.005 |
0.1 |
1.0 |
0.005 |
0.5 |
1.首先初始化参数k,m和n。设k0=0.5,m0=1,n0=1.(当m=0或n=0时,两级增量检查点恢复方案退化为两级检查点恢复方案,因此值m=0或n=0没有任何意义。)
2.输入k0,m0和n。使用s(η)opt=Aexp计算最佳检查点频率函数。输出s(η)opt=Aexp。
3.输入s(η)opt=Aexp。带入
计算m和n的最小值。输出mmin和nmin。
计算与k0,m0和n0相关的检查点放置时间。输出t
1,t
2,...,t
N。当确定k和m和n的最小值时,可以使用
计算检查点放置时间,然后最终确定两级增量检查点放置策略。
则i-checkpoint检查点的数量如下表所示
结果表明,检查点比率u越大,给定参数pn的i型检验点的最佳数量越小。特别是当值u足够大时,不会设置i-checkpoint。pn=0.25并且u=Oi/Om=0.9时,将没有i-checkpoints,只存在N-checkpoint和m-checkpoint,现在两级增量检查点恢复方案退化为两级检
查点恢复方案。这是因为当值u变得越来越大时,这导致设置i-checkpoints的开销变得越来越大,并逐渐接近设置m-checkpoint的开销。上述情况导致i-checkpoint的开销大约等于m-checkpoint的开销,因此i-checkpoint逐渐变为m-checkpoint直到它消失。
本实施实例,步骤三中对云计算节高可用性,定义引力系数,其中ξ表示目标节点对其他其他节点的引力的权力系数,若目标节点无N-checkpoint,则ξ=1,当目标节点存储过N-checkpoint,则ξ=(0.8)n其中n表示节点存储的数量。
定义为目标节点的资源使用相关加权函数
其中q
cpu、q
mem、q
ram分别表示目标节点的cpu使用百分比、内存使用百分比和节点存储已使用百分比,
β、η分别是q
cpu、q
mem、q
ram的权重系数且
所述
的取值为0.4,所述β的取值为0.4,所述c的取值为0.2。最终得到节点的势能值函数
x轴表示节点的地理位置,当节点直接为直连时,x=1。其中y=Nbps,Nbps表示该节点带宽使用情况,构成A×B={(x,y)|x∈A∧y∈B}其中A为节点之间的地理分布情况,B为当前节点的带宽占用情况,本实例中各节点部分势能表格如下
数据节点 |
Cpu利用率 |
内存使用率 |
节点剩余存储 |
势能值U<sub>rep</sub>(q) |
DateNode3 |
21% |
37% |
96% |
0.3088 |
DateNode1 |
37% |
25% |
98% |
0.4656 |
DateNode4 |
11% |
14% |
96% |
0.292 |
DateNode8 |
71% |
53% |
92% |
0.5096 |
DateNode15 |
69% |
65% |
98% |
0.5664 |
最后用局部优化的蚁群算法搜索最佳N型检查文件部署策略。
哈希散列算法的设计。针对用户选定上传的文件,系统将对其生产MD5值,故在此需要通过相关的算法和代码设计来实现生产文件的MD5值。在Java开发包中,java.security.MseeageDigest类实现了主流的哈希散列算法,通过.MseeageDigest.getInstance(“MD5”)实现在该类中MD5算法的初始化。由于是对文件生产MD5值,所以还需要java.nio.MappedByteBuffer和java.nio.channels.FileChannel类来对输入的文件进行处理。在生成MD5值时,通过MseeageDigest类中的update()方法将处理后的文件数据进行初始化,然后调用digest()方法即可得到字节数据形式表示的MD5值,只需要通过字节数组转字符串处理即可得到字符串形式的MD5值。数字签名算法的设计。根据数字签名算法的特性,如果直接对原始文件信息进行数字签名,由于文件的大小不一致,签名输出的长度也不一致,签名输入数据的大小还影响到签名过程的时间,基于该特性的考虑,所以在签名前需要先对文件生产MD5值,然后将文件名、上传作者、上传时间、MD5值和文件描述信息进行拼接再作为数字签名的输入,这将大大的减小签名时间和校验时间。在签名算法的设计上,使用的数字签名算法是MD5withRSA。在Java开发包,Java.security.KeyPairGenerator类提供了实例化和生产密钥对的方法,需要结合KeyPair、RSAPrivateKey和RSAPublicKey使用方可实现签名和验证数据时的公私钥。通过KeyPairGenerator.getInstance(″MD5withRSA″)实例化MD5withRSA算法,再通过调用方法generateKeyPair()实例化密钥对。在数字签名实现时,java.security.Signature类中就提供了数字签名的方法。在签名前,需要先调用initSign()和update()方法对签名私钥初始化和数据更新,然后通过Sign()方法即可获得字节数组数字签名,对该数组进行处理即可获得字符串形式的签名后的信息。兙
如图2所示算法的搜索过程主要分两阶段:第一阶段是将给定个数的蚂蚁随机分布在设计变量定义域内划分好的子空间里进行一定范围的局部搜索,记录具有最好评价函数值的优秀蚂蚁,并进行信息素局部更新第二阶段是按转移概率移动各蚂蚁在不同子空间之间进行转移,并嵌入邻域搜索机制,寻找更好的解,然后按信息素更新规则进行全局更新.
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。