一种分布式云系统-云簇架构下的服务容器资源的分配方法与系统与流程

文档序号:21407590发布日期:2020-07-07 14:41阅读:207来源:国知局
一种分布式云系统-云簇架构下的服务容器资源的分配方法与系统与流程

本发明涉及云计算技术,具体涉及分布式云系统-云簇云系统架构下的服务容器资源的分配方法与系统。



背景技术:

随着云计算技术的发展,企业通常根据自身的使用需求构建私有云。企业为确保私有云在业务高峰期能正常运行,需要按照预期业务高峰期的云资源使用情况来配置私有云数据中心的规模。然而这样的配置方式存在以下问题:

(1)企业由于难以确定业务对云资源的需求信息,很难通过其历史业务高峰期的信息准确预估未来业务高峰期对云资源的需求量。企业若按低冗余配置私有云数据中心,则可能无法满足自身业务高峰期时的资源需求;若按高冗余配置私有云数据中心,则存在资源闲置的问题。另外,随着企业自身业务的发展,其对云数据中心的资源需求量也会发生变化。企业为了满足业务的发展,需要对私有云进行扩容。扩容涉及到设备的采购和安装调测等过程,需要长达数天或者数周的时间,难以即时满足企业的业务需求。

(2)私有云数据中心在非高峰期会存在大量的资源闲置,造成资源的浪费。

而随着微服务和无服务器应用程序的兴起,企业通过使用容器可以在云上更便捷地打包、部署、迁移web应用程序。然而,容器技术虽然更轻量级,部署运行更快速,但存在以下缺点:容器共享同一个操作系统造成一个容器中的应用程序漏洞会破坏与其它容器共享的操作系统;容器限制于在特定的操作系统环境下运行。

因此容器技术和虚拟机将会在较长时间内作为互补,以支持容器获得更好的隔离和更方便的部署。目前这种典型工作方案是由云用户在云数据中心部署虚拟机、在虚拟机上运行满足其特定设置的数据隔离规则和要求的容器以执行任务。

现有的容器云资源分配方法往往只考虑将容器分配给微云系统的过程,没有详细设定容器绑定到具体虚拟机和虚拟机绑定到具体微云系统这两个过程之间的交互,导致实现最佳的容器分配方案时无法同时实现最佳的虚拟机分配方案。容器绑定到具体虚拟机和虚拟机绑定到具体微云系统这两个不同级别的云资源分配问题都是装箱问题。装箱问题属于np完全问题。

在分布式云系统-云簇云系统架构下,单个微云系统在特定的时间段资源无法满足本地任务的资源需求时,可以向云簇系统下的邻居微云系统请求分配资源,满足用户的业务需求。因此,需要一套支持在分布式云系统-云簇云系统架构下的服务容器的资源的分配方法,使得:

(1)处于业务高峰期的微云系统可请求邻居微云系统分配资源来解决即时资源不足的问题;处于低负荷的微云系统可以出借资源,避免大量资源的闲置浪费。

(2)形成服务成本最低的跨微云容器资源实时分配方案。



技术实现要素:

为了解决分布式云系统-云簇云系统架构下,以容器为单位提供云计算服务的微云系统在业务高峰期出现资源紧缺和在业务非高峰期出现大量资源闲置的问题,本发明提出分布式云系统-云簇架构下的服务容器资源的分配方法与系统。

本发明的分配方法通过如下技术方案来实现:分布式云系统-云簇架构下的服务容器资源的分配方法,包括以下步骤:

s1、本地微云系统收集其自身的资源情况、资源实际使用情况;云簇管理中心收集所有微云资源情况、实际资源使用情况;本地微云系统从云簇管理中心获取其相邻微云系统集的信息;

s2、本地微云系统根据终端用户提交的任务请求,估算完成任务需要构建的容器数量及相关的资源需求量;

s3、本地微云系统基于其本身运行的任务管理算法,决定一个终端用户的业务请求能否由本地微云系统服务;

s4、若本地微云系统有足够资源直接执行任务,则依据计算服务成本最低的策略创建虚拟机,并在新创建的虚拟机上创建容器为用户提供服务;

s5、若本地微云系统无法服务,则基于双染色体遗传算法计算生成服务成本最低的跨微云容器资源分配方案,将部分或者全部任务转载到其它相邻微云系统上执行;本地微云系统根据跨微云的容器资源分配方案,遵照跨微云服务请求流程请求相关邻居微云提供服务;相关邻居微云收到请求后,则确认请求并分配资源,创建虚拟机,并在新创建的虚拟机上创建容器为用户提供服务。

本发明的分配系统通过如下技术方案来实现:分布式云系统-云簇架构下的服务容器资源的分配系统,包括一个云簇管理中心和若干个微云系统;

云簇管理中心将地理分散的微云系统结合成一个紧密整体,包括:

管理通信模块:负责微云系统的管理和通信功能;

资源监控模块:监控云簇云系统中所有微云资源的使用情况;

微云系统是一个具备独立对外服务和自管理能力的完整云计算系统,提供用户实际使用所需的计算、计算加速、存储、网络资源;一个微云系统除了提供实际云服务的相关资源外,还包括:

资源监控模块:监控其资源使用情况;

任务管理模块:负责管理终端用户的任务请求、分配计算任务和监听任务执行情况;

资源调度模块:计算执行本地服务成本最低的资源分配方案、计算执行跨微云容器资源分配方案及监听、执行由云间互操作模块提交的其它微云系统的资源分配请求的资源分配方案;

微云管理模块:负责与云簇管理中心通信;

云间互操作模块:负责微云系统间互相通信、资源分配。

与现有技术相比,本发明取得了如下技术效果:

1、本发明采用资源分配的方案,当本地微云资源不足以满足任务的需求时,根据资源调度策略,向邻居微云申请分配资源,有效缓解处于业务高峰期的微云系统资源不足的问题;充分利用了处于低负荷的微云系统的资源,避免大量资源的闲置浪费,提高整个云簇系统的资源利用率。

2、本发明的调度策略考虑了服务成本,能够有效降低向邻居微云请求分配资源的成本,形成服务成本最低的跨微云容器资源实时分配方案,提升用户体验。

附图说明

图1是本发明分布式云系统-云簇云系统架构下的服务容器资源的分配方法的流程图。

图2是本发明分布式云系统-云簇云系统架构下的服务容器资源的分配系统框架图。

图3是本发明中的微云系统中各模块的数量关系图。

图4是本发明的计算跨微云容器资源分配方案的双染色体遗传算法流程图。

图5是本发明的双染色体遗传算法的表示图。

图6是本发明的基于位置的交叉算法的表示图。

图7是本发明的单点交叉算法的表示图。

图8是本发明的双染色体遗传算法变异的表示图。

图9是本发明的跨微云服务请求流程的流程图。

具体实施方式

以下结合附图及具体实施例对本发明作进一步的阐述,但本发明的实施方式不限于此。所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。

实施例

图1是本发明的资源分配方法流程图,在具体的实施过程中,支持在云簇系统下以容器为单位服务终端业务的请求。如图2,本发明分布式云系统-云簇架构下的服务容器资源的分配系统,包括一个云簇管理中心和若干个微云系统。云簇系统中所有的微云系统形成云簇系统的微云集。

云簇管理中心将地理分散的微云系统结合成一个紧密整体,协调所有微云的信息沟通,统筹管理整个云簇系统的资源,包括:

管理通信模块,负责微云系统的管理和通信功能;包括微云系统的接入与删除,监听微云系统提交的获取其它微云系统的资源情况和实际资源使用情况的请求,管理云簇管理中心和微云系统间通信。当有新的微云加入云簇时,云簇管理中心的管理通信模块负责审核和认证;认证通过后通知其它微云系统并更新云簇的拓扑图;向新加入的微云系统告知云簇拓扑中其它微云的相关信息。当删除微云时,云簇管理中心的管理通信模块负责审核;审核通过后删除该微云的信息并通告其它微云系统更新云簇拓扑图。

资源监控模块,用于监控云簇云系统中所有微云资源的使用情况,实时获取云簇系统下所有微云的资源情况和资源使用情况。

一个微云系统的用户所需的资源可按相关规则从另一个微云系统借用。微云系统是一个具备独立对外服务和自管理能力的完整云计算系统,提供用户实际使用所需的计算、计算加速、存储、网络资源。一个微云系统除了提供实际云服务的相关资源外,还包括:

资源监控模块,用于监控本地微云的资源使用情况,实时获取本地微云的资源情况和资源使用情况;

任务管理模块,用于负责管理终端用户提交的任务请求、分配计算任务和监听任务执行情况,估算终端用户提交的业务请求需要构建的容器数量及相关的资源需求量,判断该任务能否由本地微云系统服务,此外还需要监听本地微云上的任务执行情况;

微云资源调度模块,用于计算执行本地服务成本最低的资源分配方案、计算执行跨微云容器资源分配方案及监听、执行由云间互操作模块提交的其它微云系统的资源分配请求的资源分配方案;也就是说,微云资源调度模块负责调度本地微云系统资源满足用户请求或者生成跨微云容器资源分配方案,用于:

(1)若本地微云系统有足够资源直接执行任务时,微云系统调度模块计算生成服务成本最低的资源分配方案,在本地微云上创建虚拟机,并在新的虚拟机上创建容器为用户提供服务;

(2)若本地微云系统无法服务时,微云系统调度模块使用双染色体遗传算法计算生成服务成本最低的跨微云容器资源分配方案,将部分或者全部任务转载到其它相邻微云系统上执行,并通过云间互操作模块向跨微云容器资源分配方案中的相关邻居微云系统申请分配资源;

(3)若监听到云间互操作模块提交的其它微云系统提交的资源分配请求时,按照接收到的资源分配方案,在本地微云上创建虚拟机,并在新的虚拟机上创建容器为其它微云系统提供服务。

微云资源调度模块优先使用本地微云的虚拟机资源创建虚拟机,在新创建的虚拟机上创建容器执行任务,当本地资源无法满足全部申请时,用本地的剩余资源创建虚拟机,在这些虚拟机上运行部分容器,执行任务欠缺部分容器的向邻居微云分配,最终在本地或者是邻居微云上生成相应的虚拟机,在虚拟机上创建容器来执行任务。用户通过ssh连接到这些容器。

而微云服务器包括教育行业或企业搭建的云环境中的旧式或新型服务器,终端计算机包括学校实验室计算机或企业办公室的瘦终端、笔记本、台式机以及个人工作站等。虚拟机部署采取的虚拟化技术包括属于1型虚拟化的xen、vmwareesxi等,以及属于2型虚拟化的kvm、virtualbox、vmwareworkstation等。容器部署采用docker容器引擎。

微云管理模块,负责与云簇管理中心通信;是实现云簇系统管理的重要模块,包括以下功能:接入云簇、推出云簇、按一定周期向云簇管理中心发送获取邻居微云的资源情况和资源实际使用情况的请求,获取邻居微云的资源情况和资源实际使用情况,同时监听云簇管理中心发送的获取本地微云的资源情况和资源实际使用情况请求,向云簇管理中心发送本地微云的资源情况和资源实际使用情况;微云管理模块向云簇管理中心发送的本地微云的资源情况为整个本地微云系统的资源,向云簇管理中心发送的本地微云的资源实际使用情况包括本地微云系统的终端用户使用的资源量、本地微云系统借出给其它微云系统资源量和本地微云系统空载时的资源使用情况。

云间互操作模块,负责微云系统间互相通信、资源分配。

应用本发明分布式云系统-云簇架构下的服务容器资源的分配系统,在本地微云资源不足以满足任务的需求时,能够形成服务成本最低的跨微云容器资源实时分配方案。该方案支持向邻居微云申请分配资源,有效缓解处于业务高峰期的微云系统资源不足的问题,充分利用了处于低负荷的微云系统的资源,避免大量资源的闲置浪费,提高整个云簇系统的资源利用率。

图3是本发明的微云系统各模块数量关系图,阐述了各模块与物理设备的位置和数量关系,以及各模块之间的数量关系。安装了云计算平台的云端计算服务器通过虚拟化技术共同构成了虚拟机资源池,一个服务器可以虚拟化出多台虚拟机,一台虚拟机上可以装载多个容器,用户的终端计算机可以通过ssh连接到容器,一个用户终端计算机可以连接多个容器。资源调度模块管理着本地微云的物理服务器,维护虚拟机资源池中各项资源以及资源的使用状态,与之是一对一的关系。微云资源监控模块负责监控微云系统的资源情况和资源实际使用情况,与虚拟机资源池是一对一的关系。任务模块管理着容器中执行的任务,是一对多的关系,同时也接收来自用户终端的请求,与之也是一对多的关系。资源调度模块从资源监控模块获取本地微云的资源情况与实际资源使用情况;从任务管理模块接收到是否在本地微云执行任务的判断;通过微云管理模块与云簇管理中心通信,获取邻居微云的资源使用情况和资源实际使用情况;通过云间互操作模块向其它微云进行通信和资源分配的操作。因此,资源调度模块与任务管理模块、微云管理模块以及资源监控模块是一对一的关系;资源调度模块管理着从虚拟机资源池创建的虚拟机和虚拟机上创建的容器,与二者都是一对多的关系。

本发明分布式云系统-云簇架构下的服务容器资源的分配方法,在云簇系统下以容器为单位服务终端业务的请求时采用以下步骤分配资源:

s1、本地微云系统收集其自身的资源情况、资源实际使用情况;云簇管理中心收集所有微云资源情况、实际资源使用情况;本地微云系统从云簇管理中心获取其相邻微云系统集的信息;上述资源包括cpu资源、gpu资源、内存资源、硬盘存储资源、带宽资源等;

(a)本地微云系统的资源监控模块实时收集其自身资源的情况和资源的实际使用情况,资源包括cpu资源、内存资源、存储资源以及带宽资源。

(b)云簇管理中心的资源监控模块,通过云簇管理中心的管理通信模块,按一定周期向获取云簇系统下所有微云的微云管理模块发送获取该微云的资源情况和资源使用情况的请求,从而收集到整个云簇系统下所有微云的资源情况和资源实际使用情况,资源包括cpu资源、内存资源、存储资源以及带宽资源。

(c)本地微云系统的微云管理模块,按一定周期向云簇管理中心发送请求并获取相邻微云的资源情况和资源实际使用情况。

s2、本地微云系统根据终端用户提交的任务请求,估算完成任务需要构建的容器数量及相关的资源需求量;

本地微云的任务管理模块监听到本地微云的终端用户提交的任务请求,估算终端用户提交的任务请求需要构建的容器数量c和容器的资源需求量:

dockeri={cpudocker,ramdocker,netdocker,diskdocker}

s3、本地微云系统基于其本身运行的任务管理算法决定一个终端用户的业务请求,能否由本地微云系统服务,是由本地微云系统提供服务还是由相邻微云系统提供服务;

(a)本地微云的任务管理模块获取本地微云的资源监控模块收集的资源情况和实际的资源使用情况。

(b)本地微云的任务管理模块采用资源阈值的本地资源优先算法,判断终端业务能否在本地微云系统上执行:本地微云系统根据自身的cpu资源、内存资源、带宽资源和存储资源信息,预先设置自身的资源阈值:

thresholdi={thcpu,thram,thnet,thdisk};

若任务管理模块估算完成终端用户的任务所需资源总量与本地微云系统实际使用的资源量之和(即两者的cpu资源、内存资源、带宽资源与存储资源之和)低于本地微云系统预先设定的资源阈值thresholdi,本地微云的任务管理模块选择由本地微云系统提供服务;若任务管理模块估算完成终端用户的任务所需资源总量与本地微云系统实际使用的资源量之和(即两者的cpu资源、内存资源、带宽资源与存储资源)存在一种资源高于本地微云系统预先设定的资源阈值thresholdi,则本地微云任务管理模块选择由邻居微云系统提供服务。

s4、若本地微云系统有足够资源直接执行任务,则依据计算服务成本最低的策略创建虚拟机,并在新创建的虚拟机上创建容器为用户提供服务;

(a)云簇系统具有固定预设规格的虚拟机类型,预设规格指创建该类型的虚拟机所需要的cpu资源、内存资源、存储资源以及带宽资源是固定预设的。若本地微云系统有足够资源提供服务,微云系统的资源调度模块计算满足容器资源需求的所有分配方案中所需要创建的每种规格的虚拟机的数量和服务成本,选择资源分配方案中的服务成本最低的资源分配方案,按该分配方案在本地微云上创建虚拟机,并在新的虚拟机上创建容器满足任务需求。本地微云的服务成本是指任务在本地微云系统上的运行成本,包括执行该任务的容器的运行成本和执行该任务的虚拟机空载时的运行成本。

其中costlocal是任务在本地微云系统上的运行成本,是执行该任务的相关容器的运行成本、执行该任务的相关的虚拟机空载时的运行成本。

容器的运行成本是指任务容器在本地微云系统创建的虚拟机上运行时的开销,是任务时长与在虚拟机运行该容器的单位时长运行成本之积。虚拟机运行容器的单位时长运行成本是该容器的cpu需求量、内存需求量、带宽需求量和存储需求量与该容器在虚拟机上运行单位时长的单位cpu成本、在虚拟机上运行单位时长的单位内存成本、在虚拟机上运行单位时长的单位带宽成本和在虚拟机上运行单位时长的单位存储成本对应的乘积之和。

其中,t为任务的执行时间,cpudocker,ramdocker,netdocker,diskdocker分别代表容器的cpu需求量、内存需求量、带宽需求量和存储需求量,为容器在虚拟机上运行单位时长的单位cpu成本,为容器在虚拟机上运行单位时长的单位内存成本,为容器在虚拟机上运行单位时长的单位带宽成本,为容器在虚拟机上运行单位时长的单位存储成本。

虚拟机空载时的运行成本是指本地微云系统创建的虚拟机空载运行时的开销,是任务时长与本地微云系统上的虚拟机空载运行的单位时长运行成本之积。虚拟机空载运行的单位时长运行成本是创建虚拟机需要的cpu资源量、内存资源量、带宽资源量和存储资源量与该虚拟机在本地微云系统上运行单位时长的单位cpu成本、在本地微云系统上运行单位时长的单位内存成本、在本地微云系统上运行单位时长的单位带宽成本和在本地微云系统上运行单位时长的单位存储成本对应的乘积之和。虚拟机空载是指为创建容器或运行应用的虚拟机。

其中,t为任务的执行时间,cpuvm,ramvm,netvm,diskvm分别代表创建虚拟机需要的cpu资源量、内存资源量、带宽资源量和存储资源量,(为虚拟机在本地微云系统上空载运行单位时长的单位cpu成本,为虚拟机在本地微云系统上空载运行单位时长的单位内存成本,为虚拟机在本地微云系统上空载运行单位时长的单位带宽成本,为虚拟机在本地微云系统上空载运行单位时长的单位存储成本。

简而言之,在步骤s4中,服务成本是指任务在本地微云系统上的运行成本,包括执行该任务的容器的运行成本和执行该任务的虚拟机空载时的运行成本;容器的运行成本是指任务容器在本地微云系统创建的虚拟机上运行时的开销,是任务时长与在虚拟机运行该容器的单位时长运行成本之积;虚拟机空载是指为创建容器或运行应用的虚拟机,虚拟机空载时的运行成本是指本地微云系统创建的虚拟机空载运行时的开销,是任务时长与本地微云系统上的虚拟机空载运行的单位时长运行成本之积;任务的运行成本越低,则代表本地微云为运行该任务所提供的开销越低。

s5、如图4所示,若本地微云系统无法服务,则使用双染色体遗传算法计算生成服务成本最低的跨微云容器资源分配方案,将部分或者全部任务转载到其它相邻微云系统上执行;本地微云系统根据跨微云的容器资源分配流程,遵照跨微云服务请求流程请求相关邻居微云提供服务。若请求成功,则相关邻居微云收到请求后,确认请求并分配资源,创建虚拟机,并在新创建的虚拟机上创建容器为用户提供服务;若请求失败,则任务失败,本地微云拒绝为用户提供服务并向用户反馈失败信息。

在步骤s5中所述的邻居微云的服务成本是指任务在邻居微云系统上的运行成本,包括执行该任务的容器的运行成本、执行该任务的虚拟机空载时的运行成本和额外的通信成本。任务的运行成本越低,则代表邻居微云为运行该任务所提供的开销越低。

本实施例中,若本地微云系统无法服务,资源调度模块向云簇管理中心发送获取邻居微云系统的资源情况和资源实际使用情况的请求,从而获取邻居微云系统的资源情况和资源实际使用情况。本地微云的资源调度模块使用双染色体遗传算法计算生成服务成本最低的跨微云容器资源分配方案。基于双染色体遗传算法计算生成服务成本最低的跨微云容器资源分配方案,包括以下步骤:

s51、本地微云系统获取自身系统固定预设规格的虚拟机类型数量t和对应的虚拟机规格,估算完成终端用户任务需要构建的容器的容器数量c和相关的资源需求量,使用最佳适应算法估算需要创建的虚拟机数量v,向云簇管理中心发送请求并获取邻居微云系统(资源提供者)的数量m和对应的邻居微云的空闲资源信息。本地微云系统将获取的信息保存。

如图5所示,本实施例中,本地微云系统估算完成终端用户任务请求需要构建9个容器,由于本地微云系统无法服务,需要将全部任务转载到其它相邻的微云系统。假设每个容器的资源需求量为:

{1.5,2014mb,1024kb/s,4gb}

{0.3,256mb,512kb/s,256mb}

{0.5,512mb,512kb/s,512mb}

{1,2048mb,1024kb/s,4gb}

{0.1,256mb,64kb/s,1gb}

{1.2,1024mb,512kb/s,1gb}

{0.8,256mb,512kb/s,2gb}

{0.2,256mb,512kb/s,1gb}

{0.1,128mb,128kb/s,128mb}

共有4种类型的虚拟机,每种类型的虚拟机预设规格如下:

{1,1gb,1mb/s,1gb}

{2,2gb,2mb/s,4gb}

{4,4gb,4mb/s,16gb}

{8,8gb,8mb/s,64gb}

获取邻居微云系统的数量为4个,对应的邻居微云的空闲资源信息如下:

mc0={3,4gb,3mb/s,6gb}

mc1={5,10gb,8mb/s,40gb}

mc2={10,12gb,12mb/s,100gb}

mc3={16,32gb,32mb/s,200gb}

根据最佳适应算法,容器{1.5,2014mb,1024kb/s,4gb}需要绑定{2,2gb,2mb/s,4gb}规格的虚拟机,容器{0.3,256mb,512kb/s,256mb}和容器{0.5,512mb,512kb/s,512mb}需要绑定规格{1,1gb,1mb/s,1gb}规格的虚拟机,容器{1,2048mb,1024kb/s,4gb}需要绑定规格为{2,2gb,2mb/s,4gb}的虚拟机,容器{0.1,256mb,64kb/s,1gb}需要绑定规格为{1,1gb,1mb/s,1gb}的虚拟机,{1.2,1024mb,512kb/s,1gb}和{0.8,256mb,512kb/s,2gb}需要绑定规格为{2,2gb,2mb/s,4gb}的虚拟机,容器{0.2,256mb,512kb/s,1gb}需要绑定规格为{1,1gb,1mb/s,1gb}的虚拟机,容器{0.1,128mb,128kb/s,128mb}需要绑定规格为{1,1gb,1mb/s,1gb}的虚拟机;所以估算需要创建的虚拟机数量为7。

s52、设置种群个数n、交叉概率pc、变异的概率pv、终止迭代次数step和个体适应度的变化量δ;其中,0<pc<1,0<pv<1,step>1,

本实施例中,设置种群个数为50,交叉概率为0.5,变异概率为0.01,迭代次数为1000次,个体适应度变化量δ为0.5。

s53、本地微云系统使用双染色体遗传算法对种群进行多次选择、交叉和变异;通过改变染色体中的序列,得到邻居微云系统中最优的虚拟机分配方案和容器分配方案,此即为服务成本最低的跨微云容器资源分配方案;

在上述步骤s51中,需要创建的虚拟机数量v等于最佳适应算法最终得到的虚拟机数量。所述最佳适应算法,包括以下步骤:

s511、初始化虚拟机数量为0,已装载容器的虚拟机链表为空;

s512、如果所有的容器都绑定到具体的虚拟机,算法结束;如果还有容器没有绑定到虚拟机,进入步骤s513;

s513、选择一个还没绑定具体虚拟机的容器,判断已装载容器的虚拟机链表中的每一个虚拟机的剩余资源是否大于容器的资源需求量,如果存在一个虚拟机的剩余资源大于或等于容器的资源需求量,将容器绑定到该虚拟机,该虚拟机的当前的剩余资源等于该虚拟机原有的剩余资源减去容器的资源需求量;如果链表中所有虚拟机的剩余资源小于该容器的资源需求量,选择能够装载容器的最小规格的虚拟机,加入已装载容器的虚拟机链表中,虚拟机数量加1,该虚拟机的剩余资源等于虚拟机的固定预设的资源量减去当前容器所需的资源量。进入步骤s512。

所述基于双染色体遗传算法的实现过程中,步骤s53具体包括以下步骤:

s531、随机产生范围在0~c-1内的c个数字编码,作为c个容器的索引;每个容器有唯一的数字编码。需要创建的c个容器所需的cpu资源、内存资源、硬盘存储资源、带宽资源标注其相对应的数字编码。

假设终端用户提交任务请求需要创建9个容器,随机产生范围在0~8的数字作为每个容器的索引,假设产生的容器索引的序列为8-1-0-6-7-5-4-3-2,对应保存在本地微云系统中的容器的资源需求量。每个容器索引相关的资源需求量如下:

docker0={0.5,512mb,512kb/s,512mb}

docker1={0.3,256mb,512kb/s,256mb}

docker2={0.1,128mb,128kb/s,128mb}

docker3={0.2,256mb,512kb/s,1gb}

docker4={0.8,256mb,512kb/s,2gb}

docker5={1.2,1024mb,512kb/s,1gb}

docker6={1,2048mb,1024kb/s,4gb}

docker7={0.1,256mb,64kb/s,1gb}

docker8={1.5,2014mb,1024kb/s,4gb}

随机产生范围在0~t-1内的t个数字编码作为t种虚拟机类型的索引,该数字编码与t种虚拟机类型的cpu资源、内存资源、硬盘存储资源、带宽资源相对应。假设整个云簇系统中共有4种类型的虚拟机(每种虚拟机需要的资源不同),随机的产生每种虚拟机的类型。每个虚拟机的规格如下:

vmtype_0={1,1gb,1mb/s,1gb}

vmtype_1={2,2gb,2mb/s,4gb}

vmtype_2={4,4gb,4mb/s,16gb}

vmtype_3={8,8gb,8mb/s,64gb}

s532、设定个体。个体由两条独立的染色体构建。需要设定个体的数量为初始种群个数n。染色体1表示容器分配,由c个唯一的整数数值(范围在[0~c-1])随机排列组成,每个数值代表需要创建的容器的索引;染色体2表示虚拟机分配,由v个随机整数数值(范围在[0~t-1])组成,每个数值代表一种虚拟机的类型。每个个体的两条染色体的数字编码的排列顺序构成该个体的唯一编码。根据该唯一编码得出容器绑定在具体虚拟机及虚拟机绑定到具体邻居微云系统中的资源分配方案;设定算法的初始迭代次数为0。

参见图5,两条染色体的数字编码{8-1-0-6-7-5-4-3-2,1-0-2-0-0-3-1}表示种群中的一个个体,类似的个体的染色体编码也可以是{0-1-2-3-4-5-6-7-8,1-1-1-1-1-1-1}、{8-7-6-5-4-3-2-1-0,0-1-2-3-0-1-2},需要设置50个个体作为基于双染色体遗传算法的初始种群。

s533、判定当前迭代次数是否等于终止迭代次数step,若是,则进入步骤s53a,否则,进入步骤s534;设置终止迭代次数为1000;

s534、根据两条染色体的序列将容器绑定到具体的虚拟机、虚拟机绑定到具体的微云系统。在将容器绑定到具体的虚拟机时,容器按照循环首次适应算法顺序分配满足资源约束的虚拟机。当该虚拟机无法装载容器时,按顺序选择下一个能装载容器的虚拟机。虚拟机也遵循首次适应算法绑定到满足资源约束的微云系统,直到所有已经预分配了容器的虚拟机全部绑定到相应的微云系统。若无法将所有容器绑定到具体的虚拟机或者将所有已经预分配了容器的虚拟机绑定到相应的微云系统,则为该个体添加无法满足资源约束的标签。

参见图5,先将容器绑定在具体虚拟机,如染色体1中第一个容器索引为8,由于docker8={1.5,2014m,1024kb/s,4gb},创建容器8需要1.5个cpu(单个cpu满负载的1.5倍),2014mb内存,1024kb/s带宽和4gb的存储容量,染色体2序列中表示的第一个虚拟机的类型为1,可知vmtype_1={2,2gb,2mb/s,4gb}所以该虚拟机的预设规格为2个cpu、2014mb内存、1024kb/s带宽和4gb存储容量,满足容器8的资源需求,即第一个类型为1的虚拟机剩余的cpu资源、内存资源、带宽资源和存储资源均大于创建容器8所需的cpu资源、内存资源、带宽资源和存储资源,所以在第一个类型为1的虚拟机装载容器8;而第一个类型为1虚拟机由于装载了容器8,剩余的资源量里,cpu0.5,内存0mb,带宽1024kb/s和存储容量0gb,无法满足下一个容器1(docker1={0.3,256mb,512kb/s,256mb},容器1的资源需求量为0.3个cpu,256mb内存,512kb/s带宽和256mb的存储容量)的资源需求,即第一个虚拟机(类型1)剩余的0mb内存资源和0gb存储资源小于创建容器1所需的256mb内存资源和256mb存储资源,所以第一个虚拟机(类型1)关闭;容器1选择下一个能装载它的虚拟机装载,图5类型为0的虚拟机(第二条染色体中的第二个虚拟机,虚拟机类型为0,由于vmtype_0={1,1gb,1mb/s,1gb},类型0的虚拟机的预设规格为1个cpu、1gb内存、1mb/s带宽和1gb存储容量)。由于第二个虚拟机(类型0)满足容器1(docker1={0.3,256mb,512kb/s,256mb})的资源需求,第二个虚拟机(类型0)装载容器1。装载了容器1后,第二个虚拟机(类型0,剩余的资源量为0.7个cpu、768mb内存、512kb/s带宽和768mb存储容量)仍满足容器0(docker0={0.5,512mb,512kb/s,512mb})的资源需求中,所以第二个虚拟机(类型0)装载了容器1和容器0;同理,第三个虚拟机(类型2,vmtype_2={4,4gb,4mb/s,16gb})可同时满足容器6、容器7、容器5、容器4、容器3和容器2的资源需求,容器6、容器7、容器5、容器4、容器3和容器2绑定到第三个虚拟机种,容器绑定虚拟机过程完成;所述容器可使用当前业界流行的容器引擎docker所创建的docker容器。创建docker容器所需资源包括cpu资源、内存资源、硬盘存储资源、带宽资源。

在虚拟机绑定到微云系统的过程中,图5中第一个微云系统(mc0={3,4gb,3mb/s,6gb},邻居微云系统0空闲的资源为3个cpu,4gb内存,3mb/s带宽,6gb存储资源)只能装载第一个虚拟机(类型1,vmtype_1={2,2gb,2mb/s,4gb})和第二个虚拟机(类型0,vmtype_0={1,1gb,1mb/s,1gb}),剩余资源(0个cpu、1gb内存、0kb/s带宽和1gb存储资源)无法满足第三个虚拟机(类型2,vmtype_2={4,4gb,4mb/s,16gb})的资源需求,所以微云1只装载了第一个虚拟机和第二个虚拟机。邻居微云2(mc1={5,10gb,8mb/s,40gb})满足第三个虚拟机(类型2,vmtype_2={4,4gb,4mb/s,16gb})的资源需求,第三个虚拟机绑定到邻居微云2种,虚拟机绑定微云系统的过程完成。

s535、计算个体适应度。个体适应度是所有提供资源分配的邻居微云的服务成本costother。邻居微云的服务成本等于容器在邻居微云上的运行成本、提供资源分配服务的微云空载时的运行成本与额外的通信成本之和,即:

其中,是执行该任务的相关容器在虚拟机上的运行成本,是执行该任务的相关虚拟机在其它微云系统上空载运行时的运行成本,为本地微云i和邻居微云j的通信成本。

其中,t为任务的执行时间,cpudocker,ramdocker,netdocker,diskdocker分别代表容器的cpu需求量、内存需求量、带宽需求量和存储需求量,为容器在虚拟机上运行单位时长的单位cpu成本,为容器在虚拟机上运行单位时长的单位内存成本,为容器在虚拟机上运行单位时长的单位带宽成本,为容器在虚拟机上运行单位时长的单位存储成本。

其中,t为任务的执行时间,cpuvm,ramvm,netvm,diskvm分别代表创建虚拟机需要的cpu资源量、内存资源量、带宽资源量和存储资源量,为虚拟机在邻居微云系统上空载运行单位时长的单位cpu成本,为虚拟机在邻居微云系统上空载运行单位时长的单位内存成本,为虚拟机在邻居微云系统上空载运行单位时长的单位带宽成本,为虚拟机在邻居微云系统上空载运行单位时长的单位存储成本。

如果个体含有无法满足资源约束的标签,表明无法将所有容器绑定到具体的虚拟机或者将所有已经预分配了容器的虚拟机绑定到相应的微云系统。在此情况下,将运行成本设为无穷大。

s536、将种群的个体适应度按升序排列,用排前n的个体作为新的种群。若隔代个体最优个体的适应度变化量的绝对值低于δ,进入步骤s53a;否则,进入s537;

假设上一代种群最优个体适应度为50.1,这一代种群最优个体为50.2,两代种群最优个体的适应度变化量绝对值为0.1,小于预先设定的个体适应度变化量0.5,算法跳转到步骤s53a;反之如果上一代种群最优个体适应度为50.1,这一代种群最优个体为60.1,两代种群最优个体的适应度变化量绝对值为10,大于预先设定的个体适应度变化量0.5,算法跳转到步骤s537。

s537、交叉:代表容器绑定到具体虚拟机的染色体1使用基于位置的交叉(position-basedcrossover)算法进行交叉。代表虚拟机绑定到具体微云系统的染色体2使用单点交叉算法进行交叉。

参见图6,图6是基于位置的交叉算法的表示图,假设种群种有两个个体,染色体序列分别为{8-1-0-6-7-5-4-3-2,1-0-2-0-0-3-1}和{0-1-2-3-4-5-6-7-8,1-1-1-1-1-1-1}。两个个体表示容器绑定到具体虚拟机的染色体1{8-1-0-6-7-5-4-3-2}和{0-1-2-3-4-5-6-7-8}使用基于位置的交叉算法进行交叉,如说明书附图7所示,选定容器绑定到具体虚拟机的染色体的第3、第7和第8个位置作为基准位置,子代1容器绑定到具体虚拟机染色体中的第3、第7和第8个位置和父代1容器绑定到具体虚拟机染色体中的第3、第7和第8个位置的整数数值相同。父代1容器绑定到具体虚拟机染色体第3、第7和第8个位置的整数数值为0、4和3,所以子代1容器绑定到具体虚拟机染色体第3、第7和第8个位置的整数数值为0、4和3。父代2容器绑定到具体虚拟机染色体去掉整数数值0、4和3后(即父代2容器绑定到具体虚拟机染色体第1、第4和第5个位置的数值),剩下的整数数值1-2-5-6-7-8按顺序放入子代1容器绑定到具体虚拟机染色体中的第1、第2、第4、第5、第6和第9个位置,所以,子代1容器绑定到具体虚拟机染色体序列为1-2-0-5-6-7-4-3-8;同理子代2容器绑定到具体虚拟机染色体中的第3、第7和第8个位置和父代2容器绑定到具体虚拟机染色体中的第3、第7和第8个位置的整数数值相同。父代2容器绑定到具体虚拟机染色体第3、第7和第8个位置的整数数值为2、6和7,所以子代2容器绑定到具体虚拟机染色体第3、第7和第8个位置的整数数值为2、6和7。父代1容器绑定到具体虚拟机染色体去掉整数数值2、6和7后(即父代1容器绑定到具体虚拟机染色体第4、第5和第9个位置的数值),剩下的整数数值8-1-0-5-4-3按顺序放入子代2容器绑定到具体虚拟机染色体中的第1、第2、第4、第5、第6和第9个位置,所以,子代2容器绑定到具体虚拟机染色体序列为8-1-2-0-5-4-6-7-3。

参见图7,图7是单点交叉算法的表示图,图中两个个体表示虚拟机绑定到具体微云系统的染色体{1-0-2-0-0-3-1}和{1-1-1-1-1-1-1}使用单点交叉算法进行交叉,如说明书附图8所示,假设选定第6个位置进行单点交叉,那么,父代1虚拟机绑定到具体微云系统的染色体{1-0-2-0-0-3-1}第6个位置上的数值3和父代2虚拟机绑定到具体微云系统的染色体{1-1-1-1-1-1-1}第6个位置上的数值1进行交叉,得到子代1虚拟机绑定到具体微云系统的染色体{1-0-2-0-0-1-1}和子代1虚拟机绑定到具体微云系统的染色体{1-1-1-1-1-3-1}。

s538、变异:包括代表容器绑定到具体虚拟机的染色体变异和代表虚拟机绑定到具体微云系统的染色体变异。代表容器绑定到具体虚拟机的染色体变异过程为:算法随机地选取代表容器绑定到具体虚拟机的染色体中的一条染色体,交换其整数序列中的两个整数数值;代表虚拟机绑定到具体微云系统的染色体变异过程为:算法遍历个体中代表虚拟机绑定到微云系统的染色体的整数序列,对每个序列,按变异概率pv改变序列中一个或多个整数值。

参见图8,图8是双染色体遗传算法变异的表示图,其中代表容器绑定到具体虚拟机的染色体的变异过程:选取代表容器绑定到具体虚拟机的染色体{8-1-0-6-7-5-4-3-2}上第3个位置上的数值0和第7个位置上的数值4进行交换,得到子代容器绑定到具体虚拟机的染色体{8-1-4-6-7-5-0-3-2};代表虚拟机绑定到具体微云系统的染色体的变异过程:遍历父代代表虚拟机绑定到具体微云系统的染色体{1-0-2-0-0-3-1},按变异概率pv将上第6个位置上的数值3改变为数值2,得到子代虚拟机绑定到具体微云系统的染色体为{1-0-2-0-0-2-1}。

s539、将迭代次数加1并返回步骤s533;

s53a、将种群的个体适应度按升序排列后,选择第一个个体作为最优个体。最优个体包含容器绑定在具体虚拟机及虚拟机绑定到微云系统的资源分配方案。

参见图5,图中容器8绑定到第一个虚拟机(类型1),容器1和容器0绑定到第2个虚拟机(类型0),按循环首次适应算法,容器6、容器7、容器5、容器4、容器3和容器2绑定到第三个虚拟机(类型2);然后按照循环首次适应算法第一个虚拟机(类型1)和第二个虚拟机(类型0)绑定到邻居微云1,第三个虚拟机(类型2)绑定到邻居微云2。

若算法最终得到的最优个体的个体适应度为无穷大,表示无跨微云容器资源分配方案,本地微云系统拒绝为用户的任务提供服务并告知用户。若最优个体的适应度不是无穷大,则表示有跨微云容器资源分配方案,跨微云容器资源分配方案可通过最优个体的染色体解码得到。

在上述基于双染色体遗传算法的步骤s534中,所述循环首次适应算法,包括以下步骤:

s5341、初始化空闲资源的地址:如果是容器绑定到虚拟机,找到上一次装载容器的虚拟机;如果是虚拟机绑定微云系统,找到上一次装载虚拟机的微云系统;

s5342、判断当前地址的空闲资源是否满足资源约束:如果是容器绑定到虚拟机,若该虚拟机的空闲资源量大于等于容器的资源需求量,进入步骤s5344,否则进入步骤s5343;如果是虚拟机绑定微云系统,若微云系统的空闲资源量大于等于虚拟机的资源需求量,进入步骤s5344,否则进入步骤s5343;

s5343、寻找下一个空闲资源的地址:若下一个空闲资源的地址是步骤s5341初始的空闲资源地址,绑定失败,返回无法满足资源约束的信息;否则寻找下一个空闲资源的地址并进入步骤s5342;如果是容器绑定到虚拟机,下一个空闲资源的地址是下一个虚拟机的地址;如果是虚拟机绑定到微云系统,下一个空闲资源的地址是下一个微云系统的地址;

s5344、将容器绑定当前虚拟机或将虚拟机绑定当前的微云系统,修改当前地址的空闲资源信息,当前的空闲资源等于原有的空闲资源减去分配给容器或虚拟机的资源,算法结束。

本发明使用基于双染色体的遗传算法的先进性和最优性说明如下:

(1)、若本地微云系统无法服务,需要计算服务成本最低的跨微云容器资源分配方案,将部分或者全部任务转载到其它相邻微云系统上执行。跨微云容器资源分配方案包括容器绑定到具体虚拟机和虚拟机绑定到具体的邻居微云系统两个过程。这两个过程都需要判断cpu资源、内存资源、存储资源、带宽资源是否满足资源约束,是两个级别的多维装箱问题。多维装箱问题属于np完全问题。假设最坏的情况下,一个容器只能分配给一个虚拟机,本地微云系统估算完成终端用户的任务需要数量c个容器,最坏情况下需要c个虚拟机,虚拟机的类型共t种,将c个虚拟机分配给m个邻居微云。若使用枚举法计算出服务成本最低的微云容器资源分配方案,需要判断种跨微云容器资源分配方案是否满足资源约束并计算其服务成本,时间复杂度为o(c!×tc×m!),需要耗费大量的计算资源和计算时间。若使用双染色体遗传算法,设定双染色体遗传算法最大迭代次数为s,初始的种群数量为n。在每次迭代中对于种群种的每个个体,需要先判断容器能否绑定虚拟机中,时间复杂度为o(c2);然后判断虚拟机能否绑定到微云系统中,时间复杂度为o(c×m);每次迭代需要计算出种群中每个个体的适应度,最后选取前n个适应度最低的个体,经过交叉,变异作为下一次迭代的种群,时间复杂度为均为o(n)。所以每次迭代的时间复杂度为o(n×c3×m+n),经过s次迭代,算法的时间复杂度为o(s×n×c3×m+s×n)。而最大迭代次数s、微云的总数量m和为初始种群数n已知,所以双染色体遗传算法的算法时间复杂度为o(c3)。综上所述,使用双染色体遗传算法相比于枚举法,能在更短的时间内的形成全局最优或者局部最优的跨微云容器资源分配方案。

(2)、在微云系统中,每种预设规格的虚拟机的cpu资源、内存资源、存储资源和带宽资源的需求量是固定预设的。本发明中的双染色体遗传算法中的代表虚拟机绑定到微云系统的染色体,将虚拟机的规格类型作为虚拟机的索引,把虚拟机的类型也考虑到资源分配计算中。相较于只计算单一规格类型的虚拟机,更加符合生产的实际需求。此外,双染色体遗传算法中每个个体由容器绑定到虚拟机、虚拟机绑定到微云系统的两条独立的染色体构建,该算法考虑到了虚拟机绑定到微云系统和容器绑定到具体虚拟机两个过程之间的交互,解决同时实现最佳的容器分配方案和最佳的虚拟机分配方案的问题;

(3)、计算跨微云容器资源分配方案的双染色体遗传算法每次筛选出来的种群为运行成本最低的前n个种群中的个体。在最大的迭代次数范围内,将种群中的最优个体的个体适应度变化不大并趋于稳定和相邻代种群的距离小于可接受值之一的条件作为终止条件,算法满足最优性。

相应地,本发明通过步骤s5还提供一种跨微云服务请求流程,参见图9,其过程包括以下步骤:

s601、微云系统的云间互操作模块向跨微云容器资源分配方案中的相关邻居微云进行预申请。申请方微云向相关邻居微云发送与任务相关的预申请信息,包括:虚拟机数量、虚拟机规格、容器的数量、容器的规格、使用时长、镜像校验信息。

s602、邻居微云收到云间互操作模块预申请后,向该微云的资源调度模块转发预申请并请求预申请的确认。邻居微云需要查看自身资源是否足够,确认本地是否有对应的任务镜像。若资源足够,则可以进行分配,为申请方进行资源的预留;若资源不足,则不可以进行分配,在返回信息中附上最新的可分配资源情况;若本地无对应虚拟机镜像和容器镜像但资源足够,则需要进行镜像传输,将会在返回信息中要求申请方进行任务镜像传输。

s603、若存在一个邻居微云拒绝资源分配的预申请,则分配失败,本地微云拒绝为用户提供服务并告知分配失败的信息。

s604、收到申请确认后,邻居微云按照任务要求,使用任务镜像为申请方创建对应数量和规格的虚拟机,并在这些虚拟机上创建容器执行任务,向申请方返回容器的连接许可,并赋予申请方对这些容器的管理权限。

s605、任务容器装载在资源分配方案中的邻居微云上虚拟机上。具体实现是由邻居微云创建虚拟机,申请方微云将本地用户的容器连接请求通过连接凭证重定向到邻居微云的容器中。

可见,本发明通过物理资源的跨微云调度,解决了单个微云在业务高峰期资源不足的问题。本发明的资源分配方法支持微云之间共享闲置资源,由本地微云或本地微云与相邻微云共同服务用户的业务请求。微云间的闲置资源共享支持在本地微云系统没有足够资源直接执行以容器为单位的细粒度云计算服务任务的情况下,采用基于双染色体遗传算法的跨微云容器资源分配方案,将部分或者全部任务转载到相邻微云系统上执行,满足本地用户的业务需求。利用本发明,可实现微云间的资源共享,提高云系统-云簇云系统下各微云的资源利用率、最大化合理利用资源,解决资源效用瓶颈。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其它的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1