本申请涉及计算机应用技术领域,特别涉及一种云环境下可靠性增强的服务部署方法。
背景技术
在云计算平台中部署复杂服务时,需要将复杂服务的每个子服务部署到放置于物理机之上的虚拟机中,通过虚拟机协作完成复杂任务的执行。由于失效事件导致虚拟资源的非持续占用使得服务的可靠性下降,通常需要采取关键点存储或虚拟机冗余放置等措施提高服务的可靠性。当前可靠性策略由于忽略子服务计算特征的差异性以及不同子服务在可靠性需求方面的差异性,而为各子服务采用相同的可靠性策略,因此,难以取得最优的可靠性保障效果。
技术实现要素:
有鉴于此,本发明的主要目的在于提供一种云环境下可靠性增强的服务部署方法,在保证复杂服务可靠性的同时,最小化可靠性策略带来的额外网络资源开销。
本申请公开了一种云环境下可靠性增强的服务部署方法,包括:
a:将复杂服务建模为图模型,图的主节点代表所述复杂服务的子服务,图的边代表子服务之间数据传输速率;
b:遍历复杂服务各子服务,根据复杂服务各子服务的特性为其选择关键点存储或者资源冗余作为其可靠性策略;
c:基于所述选择的可靠性策略,对所述图模型进行扩展,分别为每个主节点增加关键点存储节点或冗余节点;
d:对图模型中所有连接主节点的边按数据传输速率的降序进行排序,依次将边的头尾节点映射到云数据中心的物理机上,并在物理机上按需求分配虚拟机,将节点对应的子服务部署到虚拟机上;
e:对图模型中所有连接主节点和关键点存储节点的边按数据传输速率的降序进行排序,依次将边的尾节点映射到云数据中心的物理机上,并在该物理机上为关键点分配存储空间;
f:对图模型中剩余的边按数据传输速率的降序进行排序,依次将尾节点映射到云数据中心的物理机上,并在该物理机上为冗余服务节点分配虚拟机。
较佳的,所述b包括:
遍历所述复杂服务的所有子服务,对于当前遍历的子服务si,依据无中断执行所需时间t_exe(si)、对于该子服务进行一次关键点存储所需时间t_cp(si)和进行关键点存储的可接受周期t_interval(si),基于以下公式计算无效时间百分比perc:
然后,将perc与可接受度阈值delta进行比较,如果perc大于delta,则为该子服务选择资源冗余作为其可靠性策略;若perc小于或者等于perc,则为该子服务选择关键点存储作为其可靠性策略。
较佳的,所述a包括:
a1:为复杂服务构建一个空的图模型g(v,e),其中,节点集合v和边集合e都为空;
a2:为复杂服务s={s1,s2...si...smax(s)}的每一个子服务si增加一个图节点
a3:对于有数据交互的子服务si和sj,为其对应的节点
较佳的,所述c包括:
c1:遍历选择关键点存储作为其可靠性策略的子服务,对当前遍历的子服务si所对应的主节点
然后,基于以下公式计算
并增加一条连接
c2:遍历选择资源冗余作为其可靠性策略的子服务,对当前遍历的子服务si所对应的主节点
较佳的,所述d包括:
d1:将所述图模型的边集合e中所有的主边添加到列表ranked_em[]中,对列表ranked_em[]按数据传输速率由高到低排序;
d2:遍历列表ranked_em[],对当前遍历的边ei,获取ei的头结点head(ei)和尾节点tail(ei);
d3:如果head(ei)和tail(ei)对应的子服务尚未部署,则搜索数据中心的子网,如果存在有两台物理机
d4:如果在步骤d3没有找到满足条件的子网,则搜索数据中心的集群,如果存在有两台物理机
d5:如果在步骤d4没有满足条件的集群,则从整个数据中心寻找两台物理机
d6:如果只有head(ei)尚未部署,以部署tail(ei)的物理机为中心,从近到远搜索剩余资源大于head(ei)的资源需求的物理机,在该物理机上按head(ei)对资源的需求分配虚拟机,将head(ei)对应的子服务部署在该虚拟机上,返回步骤d2;
d7:如果只有tail(ei)尚未部署,以部署head(ei)的物理机为中心,从近到远搜索剩余资源大于tail(ei)的资源需求的物理机,在该物理机上按tail(ei)对资源的需求分配虚拟机,将tail(ei)对应的子服务部署在该虚拟机上,返回步骤d2。
较佳的,所述e包括:
e1:将所述图模型的边集合e中所有的存储边添加到列表ranked_ec[]中,对ranked_ec[]按数据传输速率由高到低排序;
e2:遍历ranked_ec[],对当前遍历的边ei,获取头结点head(ei)和尾节点tail(ei);
e3:以head(ei)部署的物理机为中心,从近到远搜索剩余资源大于tail(ei)的资源需求的物理机,将该物理机分配为head(ei)的关键点存储物理机。
较佳的,所述f包括:
f1:将所述图模型的边集合e中所有冗余边添加到列表ranked_er[]中,对ranked_er[]按数据传输速率由高到低排序;
f2:遍历ranked_er[],对当前遍历的边ei,获取头结点head(ei)和尾节点tail(ei);
f3:以head(ei)部署的物理机为中心,从近到远搜索剩余资源大于tail(ei)资源需求的物理机,在该物理机上按tail(ei)对资源的需求分配虚拟机,将tail(ei)对应的子服务部署在该虚拟机上。
由上述技术方案可见,本申请提出的云环境下可靠性增强的服务部署方法通过将复杂服务建模为图模型,令图的主节点代表复杂服务的子服务,图的边代表子服务之间数据传输速率,然后依据各子服务自身的特性为各子服务选择对应的可靠性策略,并基于所选择的可靠性策略,为图模型中的各个主节点增加关键点存储节点或冗余节点,进行相应的可靠性增强的服务部署,与此同时,本申请又兼顾了各子服务可靠性保障带来网络资源占用的差异性,从而能够最小化可靠性保障带来的额外网络资源占用。
附图说明
图1为本发明实施例一的云环境下可靠性增强的服务部署方法的流程示意图。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。
为解决现有技术所存在的问题,本申请提出一种云环境下可靠性增强的服务部署方法,该方法依据各子服务自身的特性为各子服务选择对应的可靠性策略,进行可靠性增强的服务部署又兼顾各子服务可靠性保障带来网络资源占用的差异性,以最小化可靠性保障带来的额外网络资源占用。
本申请公开了一种云环境下可靠性增强的服务部署方法,该方法包括以下步骤:
步骤1:将复杂服务建模为图模型,图的主节点代表所述复杂服务的子服务,图的边代表子服务之间数据传输速率。
步骤2:遍历复杂服务各子服务,根据复杂服务各子服务的特性为其选择关键点存储或者资源冗余作为其可靠性策略。
步骤3:基于步骤2选择的可靠性策略,对步骤1的图模型进行扩展,分别为每个主节点增加关键点存储节点或冗余节点。
步骤4:对图模型中所有连接主节点的边按数据传输速率的降序进行排序,依次将边的头尾节点映射到云数据中心的物理机上,并在物理机上按需求分配虚拟机,将节点对应的子服务部署到虚拟机上。
步骤5:对图模型中所有连接主节点和关键点存储节点的边按数据传输速率的降序进行排序,依次将边的尾节点映射到云数据中心的物理机上,并在该物理机上为关键点分配存储空间。
步骤6:对图模型中剩余的边按数据传输速率的降序进行排序,依次将尾节点映射到云数据中心的物理机上,并在该物理机上为冗余服务节点分配虚拟机。
在按照步骤1至6为所有节点都分配虚拟资源后,得到一种云环境下可靠性增强的服务部署。采用本发明能提高云环境下复杂服务的可靠性。
图1为本发明实施例一的云环境下可靠性增强的服务部署方法的流程示意图,如图1所示,该方法主要包括以下步骤:
步骤a:将复杂服务建模为图模型,图的主节点代表所述复杂服务的子服务,图的边代表子服务之间数据传输速率。
下面列举一种进行建模的具体方法:
a1:为复杂服务构建一个空的图模型g(v,e),其中,节点集合v和边集合e都为空。
a2:为复杂服务s={s1,s2...si...smax(s)}的每一个子服务si增加一个图节点
a3:对于有数据交互的子服务si和sj,为其对应的节点
步骤b:遍历复杂服务各子服务,根据复杂服务各子服务的特性为其选择关键点存储或者资源冗余作为其可靠性策略。
一种较佳的选择可靠性策略的方法为:
遍历复杂服务的所有子服务,对于当前遍历的子服务si,依据无中断执行所需时间t_exe(si)、对于该子服务进行一次关键点存储所需时间t_cp(si)和进行关键点存储的可接受周期t_interval(si),基于以下公式计算无效时间百分比perc:
然后,将perc与可接受度阈值delta进行比较,如果perc大于delta,则为该子服务选择资源冗余作为其可靠性策略,即:将该子服务si加入冗余策略列表rd[];若perc小于或者等于perc,则为该子服务选择关键点存储作为其可靠性策略,即:将该子服务si加入关键点存储策略列表cp[]。
这里,冗余策略列表rd[]和关键点存储策略列表cp[]仅为举例说明,在实际应用中也可以采取其他方式分别记录选择资源冗余或关键点存储作为可靠性策略的子服务。
步骤c:根据步骤b选择的可靠性策略,对步骤a中得到的图模型进行扩展,分别为每个主节点(即:每个子服务对应的节点)增加关键点存储节点或冗余节点,得到新的图模型。一种较佳的实现方式为:
c1:遍历关键点存储策略列表cp[],对当前遍历的子服务si所对应的主节点
然后,基于以下公式计算
并增加一条连接
c2:遍历冗余策略列表rd[],对当前遍历的子服务si所对应的主节点
步骤d:对图模型中的主节点之间的连接边按数据传输速率的降序进行排序,依次将边的头尾节点映射到云数据中心的物理机上,并在物理机上按需求分配虚拟机,将节点对应的子服务部署到虚拟机上。一种较佳的实现方式为:
d1:将集合e中所有的主边添加到列表ranked_em[]中,对列表ranked_em[]按数据传输速率由高到低排序。
d2:遍历列表ranked_em[],对当前遍历的边ei,获取ei的头结点head(ei)和尾节点tail(ei)。
d3:如果head(ei)和tail(ei)对应的子服务尚未部署,则搜索数据中心的子网,如果存在有两台物理机
d4:如果在步骤d3没有找到满足条件的子网,则搜索数据中心的集群,如果存在有两台物理机
d5:如果在步骤d4没有满足条件的集群,则从整个数据中心寻找两台物理机
d6:如果只有head(ei)尚未部署,以部署tail(ei)的物理机为中心,从近到远搜索剩余资源大于head(ei)的资源需求的物理机,在该物理机上按head(ei)对资源的需求分配虚拟机,将head(ei)对应的子服务部署在该虚拟机上,返回步骤d2。
d7:如果只有tail(ei)尚未部署,以部署head(ei)的物理机为中心,从近到远搜索剩余资源大于tail(ei)的资源需求的物理机,在该物理机上按tail(ei)对资源的需求分配虚拟机,将tail(ei)对应的子服务部署在该虚拟机上,返回步骤d2。
步骤e:对图模型中的主节点和关键点存储节点之间的边按数据传输速率的降序进行排序,依次将边的尾节点映射到云数据中心的物理机上,并在该物理机上为关键点分配存储空间。一种较佳的实现方式为:
e1:将集合e中所有的存储边添加到列表ranked_ec[]中,对ranked_ec[]按数据传输速率由高到低排序。
e2:遍历ranked_ec[],对当前遍历的边ei,获取头结点head(ei)和尾节点tail(ei)。
e3:以head(ei)部署的物理机为中心,从近到远搜索剩余资源大于tail(ei)的资源需求的物理机,将该物理机分配为head(ei)的关键点存储物理机。
步骤f:对图模型中剩余的边按数据传输速率的降序进行排序,依次将尾节点映射到云数据中心的物理机上,在该物理机上为冗余服务节点分配虚拟机。一种较佳的实现方式为:
f1:将集合e中所有冗余边添加到列表ranked_er[]中,对ranked_er[]按数据传输速率由高到低排序。
f2:遍历ranked_er[],对当前遍历的边ei,获取头结点head(ei)和尾节点tail(ei)。
f3:以head(ei)部署的物理机为中心,从近到远搜索剩余资源大于tail(ei)资源需求的物理机,在该物理机上按tail(ei)对资源的需求分配虚拟机,将tail(ei)对应的子服务部署在该虚拟机上。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。