CN105515864B - 容器资源自适应调整方法及系统 - Google Patents
容器资源自适应调整方法及系统 Download PDFInfo
- Publication number
- CN105515864B CN105515864B CN201510918816.7A CN201510918816A CN105515864B CN 105515864 B CN105515864 B CN 105515864B CN 201510918816 A CN201510918816 A CN 201510918816A CN 105515864 B CN105515864 B CN 105515864B
- Authority
- CN
- China
- Prior art keywords
- container
- information
- host
- scheduler
- resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0876—Aspects of the degree of configuration automation
- H04L41/0886—Fully automatic configuration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1025—Dynamic adaptation of the criteria on which the server selection is based
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Automation & Control Theory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种容器资源自适应调整方法。该容器资源自适应调整方法包括:调度器接收用户请求并获取所有容器信息;所述调度器根据获取的容器信息选择负载最小的容器;所述调度器根据容器的信息判断所选择的容器是否未使用;若选择的容器未使用,所述调度器修改所选择的容器的信息和所属宿主机的信息;所述调度器根据所属的宿主机的信息判断所属宿主机中所述应用已经使用的容器数量是否达到预设的数量阈值;若已经使用的容器数量达到预设的数量阈值,所述调度器通知所属宿主机为所述应用创建相应数量的容器;以及所述调度器将所述用户请求重定向至所选择的容器。此外,本发明还提供一种容器资源自适应调整系统。
Description
技术领域
本发明涉及云计算领域,尤其涉及一种容器资源自适应调整方法及系统。
背景技术
容器技术在云计算领域的应用越来越普遍。相比于传统的虚拟机,容器大大简化了管理和部署应用程序的任务,能够让开发人员快速构建可随时运行的容器化的应用程序,能够让更多数量的应用程序运行在相同的硬件上。
使用容器技术的云计算平台中通常运行着多种不同的应用,各种应用在不同时段的负载是不同的。为适应不同应用的不同负载,传统做法是预先估计应用负载,根据预估的负载为不同的应用启动不同数量的容器。然而实际的负载情况是动态变化的,预估的负载只是一个固定的值或者范围,只能根据这种预估为应用启动固定数量的容器,而不能根据动态变化的应用负载来动态调整承载应用的容器数量,不能让平台平稳地运行。比如说,在某个时段,如果某个应用的负载较大,而预先为这个应用启动的容器数量较少,则应用的每个容器需要承载的负载较大,可能无法很好地处理用户请求。
发明内容
有鉴于此,实有必要提供一种容器资源自适应调整方法,可以根据应用在不同时段的负载提供合适的容器资源。
一种容器资源自适应调整方法,其包括如下步骤:
调度器接收用户请求并获取所有容器信息,其中,所述的所有容器信息包括每个容器的信息和每个容器所属的宿主机的信息;所述容器的信息包括容器的负载信息和负载数量;所属宿主机的信息包括所属宿主机的每个容器的信息和每个应用已使用的容器数量;所述用户请求表示为相应的应用分配容器的请求;
所述调度器根据获取的容器信息选择负载最小的容器;
所述调度器根据容器的信息判断所选择的容器是否未使用;
若选择的容器未使用,所述调度器修改所选择的容器的信息和所属宿主机的信息;
所述调度器根据所属的宿主机的信息判断所属宿主机中所述应用已经使用的容器数量是否达到预设的数量阈值;
若已经使用的容器数量达到预设的数量阈值,所述调度器通知所属宿主机为所述应用创建相应数量的容器;以及
所述调度器将所述用户请求重定向至所选择的容器。
一种容器资源自适应调整系统,所述容器资源自适应调整系统包括调度器。所述调度器包括调度器分布式缓存读写模块以及容器分配模块,所述容器分配模块用于接收所述用户请求,所述调度器分布式缓存读写模块用于响应用户请求获取所有容器信息,其中,所述的所有容器信息包括每个容器的信息和每个容器所属的宿主机的信息;所述容器的信息包括容器的负载信息和负载数量;所属宿主机的信息包括所属宿主机的每个容器的信息和每个应用已使用的容器数量;所述容器分配模块包括选择单元、判断单元、修改单元、以及分配单元,
所述选择单元,用于根据容器信息查找负载最小的容器;
所述判断单元,根据所选择的容器的信息判断所选择的容器是否未使用;
所述修改单元用于当所选择的容器未使用时,修改所选择的容器的信息和所属宿主机的信息;
所述判断单元还根据所属的宿主机的信息判断所选择的容器所属宿主机中所述应用已经使用的容器数是否达到预设的数量阈值;若已经使用的容器数达到预设的数量阈值,所述判断单元通知所属的宿主机为所述应用创建相应数量的容器;
所述分配单元,用于将所述用户请求重定向到所选择的容器。
上述容器资源自适应调整方法及系统可以根据用户请求为应用分配负载最小的容器,并在选择的容器所属宿主机中应用已经使用的容器数量超过预设的数量阈值时,通知所属宿主机创建更多的容器,从而根据应用在不同时段的负载提供合适的容器资源。
附图说明
为了易于说明,本发明对下述较佳实施例及附图作详细描述。
图1为较佳实施方式的容器资源系统运行环境示意图。
图2为图1所示的容器管理模块的功能模块图。
图3为图1所示的容器分配模块的功能模块图。
图4a-图4c为容器信息存储结构示意图。
图5为生成应用镜像文件的流程图。
图6为创建应用容器的流程图。
图7为第一实施方式的容器资源自适应调整方法的流程图。
图8为图7所示的容器资源自适应调整方法的具体实施例流程图。
图9为第一实施方式的多余空闲容器销毁方法的流程图。
图10为图9所示的多余空闲容器销毁方法的具体实施例流程图。
具体实施方式
请参看图1,容器资源自适应调整系统100包括应用管理平台10、负载均衡器集群20、调度器集群30、容器宿主机集群40、镜像文件生成系统50、分布式缓存系统60、以及镜像文件仓库70。其中,分布式缓存系统60用于存储应用文件信息、容器信息和用户信息,以供调度器集群30和容器宿主机集群40使用。容器信息包括容器名称、容器负载信息和负载数量、容器所属宿主机的信息等。宿主机的信息包括宿主机中每个容器的信息以及每个应用已经使用的容器数量等。
应用管理平台10用于供用户与容器资源自适应调整系统100进行交互。应用管理平台10包括界面模块11、用户接口模块12、文件存储模块13、以及管理接口模块14。
界面模块11提供用于与用户进行交互的用户界面。例如,用户可通过界面模块11上传应用文件或者输入为应用分配容器的用户请求。
用户接口模块12用于为界面模块11提供添加/删除应用、发布应用文件等接口。
文件存储模块13用于存储应用文件。
管理接口模块14用于与镜像文件生成系统50进行通讯,以使镜像文件生成系统50查询应用文件信息和下载应用文件。
镜像文件生成系统50包括应用管理接口模块51、镜像文件创建模块52、镜像文件仓库存储模块53、以及分布式缓存读写模块54。
应用管理接口模块51用于与应用管理平台10通信,定时地读取应用信息并下载应用文件。
镜像文件创建模块52用于将应用文件写入到包含应用基础运行环境的基础镜像文件中,以生成包含特定应用文件的应用镜像文件。
镜像文件仓库存储模块53用于将所述包含特定应用文件的应用镜像文件存储到镜像文件仓库70中。
分布式缓存读写模块54用于当镜像文件仓库70存储所述应用镜像文件时,更新分布式缓存系统60中存储的应用文件信息。
容器宿主机集群40包括若干容器宿主机41。每个容器宿主机41中运行着宿主机守护进程。容器宿主机41包括容器管理模块410、分布式缓存读写模块412、以及镜像文件仓库通信模块414。
分布式缓存读写模块412用于从分布式缓存系统60中获取所述宿主机41的所有容器列表、以及获取应用文件信息。该容器列表按照空闲容器的空闲时间长短进行排序。
镜像文件仓库通信模块414根据所述应用文件信息从镜像文件仓库70中获取所述应用镜像文件。
请结合参看图2,容器管理模块410用于为宿主机创建容器以及还用于销毁宿主机41中多余的空闲容器。具体地,容器管理模块410包括判断单元4102、创建单元4103、以及删除单元4104。
创建单元4103用于为所述应用镜像文件创建相应的容器。
判断单元4102用于判断容器所属宿主机41的容器总数量是否大于预设的最小容器数量,并当宿主机41的容器总数量大于预设的最小容器数量时,判断是否存在需销毁的容器。优选地,获取的容器列表按照预设的顺序进行排列。该预设的顺序指的是将需销毁的容器按照空闲时间长短进行排序。判断单元4102从获取的容器列表中逐个查找容器,并判断查找到的容器是否未使用以及未使用的容器空闲的时间是否达到预设的空闲时间。
当查找到的容器未使用且超过预设的空闲时间,则判断单元4102标记该容器是需销毁的容器。优选地,判断单元4102中还设置有需销毁容器数量。需销毁的容器数量初始值为0,每当标记一个需销毁的容器时,需销毁的容器数量增加1。此外,判断单元4102还用于判断当前的容器总数量与需销毁的容器数量的差值是否大于预设的最小容器数量。若当前的容器总数量与需销毁的容器数量的差值大于预设的最小容器数量时,删除单元4104对需要销毁的容器标注为需销毁。若当前的容器总数量与需销毁的容器数量的差值小于预设的最小容器数量时(即剩余容器数会低于预设的最小容器数量),此时需要销毁的容器已经寻找完,判断单元4102不再判断是否继续需要销毁容器;删除单元4104将需销毁的容器进行销毁。由于容器列表按照预设的顺序(即容器的空闲时间从长到短的顺序)进行排序,因此,判断单元4102可以优先查找出空闲时间较长的容器,以使删除单元4104优先删除空闲时间较长的容器。
可以理解地,在一些其他实施方式中,若容器列表并未按照该预设的顺序进行排序,容器管理模块410的工作过程如下。模块判断单元4102将全部需销毁的容器(空闲时间超过预设空闲时间的容器)查找出来。然后,判断单元4102判断当前的容器总数量与需销毁的容器数量的差值是否大于预设的最小容器数量。若是,删除单元4104删除全部的容器。若否,删除单元4104删除部分的需销毁的容器,其中,被删除的需销毁的容器数量为当前容器总数量与预设的最小容器数量的差值。优选地,删除单元4104同样按照预设的顺序(即容器的空闲时间从长到短的顺序)对部分的需销毁的容器进行删除。
分布式缓存读写模块412还用于当容器管理模块410创建容器时,将创建的容器信息保存到分布式缓存系统60,在销毁容器时将销毁的容器信息从分布式缓存系统60中删除。
负载均衡器集群20包括多个负载均衡器21。多个负载均衡器21同时工作,用于将用户请求分发到调度器集群30的调度器31。由于负载均衡器集群20包括若干负载均衡器21,当部分负载均衡器21宕机时,用户请求仍然可以分发,因此,负载均衡器集群20具有高可用性。其中,该用户请求通过应用管理平台10输入。
调度器集群30包括多个调度器31。调度器31用于根据用户请求为相应的应用分配最小的容器数量,并更新分布式缓存系统60中的容器信息和用户信息。每个调度器31包括分布式缓存读写模块310、容器排序模块312、以及容器分配模块314。
在一些实施例中,分布式缓存读写模块310用于侦测分布式缓存系统60中的用户信息和容器信息,并当分布式缓存系统60中的用户信息或者容器信息更新时,获取更新后的用户信息或者容器信息。
容器排序模块312用于根据获取的容器信息将容器按照预设顺序排序。具体地,该预设顺序为容器的负载从小到大的顺序。
容器分配模块314,用于选择出负载最小的容器分配给相应的应用。容器分配模块314还可修改容器负载数量,并产生排序指令控制容器排序模块312对被分配的容器进行次序调整。如此,容器分配模块314将容器分配给用户后,容器负载将发生变化,容器排序模块312将对被分配的容器进行调整,保证容器位于容器列表中的正确位置。同时,容器分配模块314还产生更新指令以控制分布式缓存读写模块310将更新后的用户信息和容器信息写入分布式缓存系统60中。
请结合参看图3,容器分配模块314包括选择单元3140、判断单元3142、修改单元3144、以及分配单元3146。
选择单元3140还用于根据排序结果选择出负载数最少的容器。
判断单元3142用于判断所选择的容器是否未使用。在本实施方式中,判断单元3142通过所选择的容器的原负载数量判断该容器是否未使用。由于容器在未使用时,容器的负载数量为0。因此,当所选择的容器的原负载为0时,表示所选择的容器未使用。反之,所选择的容器已使用。
修改单元3144用于修改容器的负载数和所属的宿主机41中该应用已使用的容器数量。当选择单元3140选择出容器时,修改单元3142对该容器的负载数增加1,对所属的宿主机41中该应用已经使用的容器数量增加1。
分配单元3146将用户请求重定向至所选择的容器,让所选择的容器处理该用户请求。
判断单元3142还用于判断所选择的容器所属的宿主机41中该应用已使用的容器数是否达到预设的数量阈值,并当已使用的容器数达到预设的数量阈值,产生创建指令以控制所属宿主机41为应用创建相应数量的容器。在本实施方式中,该预设的数量阈值是根据宿主机41中该应用当前的容器总数量的百分比X进行设置的,其中,0<X≤1。例如X为80%时,若所选择的容器所属的宿主机41中该应用已使用的容器数达到该应用的容器总数量的80%时,所属宿主机41为该应用创建相应数量的容器。在实施方式中,所属宿主机41为该应用创建容器时,按照该应用的容器总数量的百分比Y进行创建,其中,0<Y≤1。例如Y为20%时,应用当前的容器总数量为30个,则所属宿主机41应该创建6个容器。数量阈值可以理解地,在一些实施方式中,所属宿主机41为该应用创建容器时,还可以按照预设的数量Z进行创建。该数量Z为大于1的整数。
在另一些实施例中,分布式缓存读写模块310用于侦测分布式缓存系统60中的用户信息和容器信息,并当分布式缓存系统60中的用户信息或者容器信息更新时,获取更新后的用户信息或者容器信息并写入内存中。如此,用户请求分配容器时,分布式缓存读写模块310只需根据内存中的容器信息中选择负载最小的容器,从而大幅度提升调度器31分配容器的速度。另外,当容器分配模块314选择负载最小的容器并修改容器的负载信息和使用状态信息后,分布式缓存读写模块310将修改后的容器信息写入内存中。
请结合参看图4a-4c,在另一些实施例中,在存储容器信息时,采用小根堆方式进行存储。堆是一种经过排序的二叉树,而小根堆的特点是根节点的值是所有节点键值中最小的。修改某节点的值,或者插入新的节点时,只需要很少量的运算就可以继续保持小根堆的有序,因为容器负载信息会因为用户请求而经常变化,又因为需要能够快速找出当前负载最小的容器。优选地,当存储容器信息时,采用小根堆方式进行存储。其中,容器的负载数可被作为小根堆节点的键值。
基于小根堆方式保存容器信息后,每次为用户请求分配容器时,只需要将小根堆中第一个节点代表的容器分配给用户即可,因为小根堆中第一个节点就是键值最小的节点。这个节点就代表当前负载数最小的容器。为用户请求分配容器、修改容器负载数之后,需要对小根堆进行调整,保证堆中第一个节点代表的容器是当前负载数最小的容器。
图4a是使用小根堆保存容器信息和进行容器分配的示意图。图中每个圆圈表示一个容器,圆圈中的数代表容器的负载数(图示省略了容器的其他信息)。根节点代表的容器的负载是6,表示这个时刻,负载最小的容器。图4b表示为用户请求分配由根节点表示的负载最小的容器后,这个容器的负载增加1,变成7。图4c表示对小根堆进行调整后的结果。调整后新的根节点代表的容器的负载是6,是当前负载最小的容器。
以上,基于内存对分布式缓存进行加速,并采用小根堆的数据存储结构进行数据变更的读写优化后,较仅是基于分布式缓存的读写速度增加100倍以上(从原来的几百毫秒加速为几毫秒),从而实现容器的快速分配与快速自适应。
请参看图5-10,其为较佳实施方式的容器资源自适应调整方法的流程图。容器资源自适应调整方法包括以下的子方法:应用的镜像文件生成方法(如图5)、应用的容器创建方法(如图6)、容器资源的自适应调整方法(如图7和图8)、以及多余空闲容器的容器销毁方法(如图9和图10)。
请参看图5,其为应用的镜像文件生成流程的示意图,应用的镜像文件生成方法包括如下步骤:
步骤S501,应用管理平台10接收用户通过应用管理平台10上传的应用文件。
步骤S502,应用管理平台10存储应用文件到文件系统中。
步骤S503,镜像文件生成系统50从应用管理平台10下载应用文件。
步骤S504,镜像文件生成系统50根据下载的应用文件和基础镜像,生成包含特定应用的应用镜像文件。
步骤S505,镜像文件生成系统50将应用镜像文件存储到镜像文件仓库70中。
步骤S506,镜像文件生成系统50更新分布式缓存系统60中的应用信息。
请参看图6,其为应用的容器创建方法的流程图,应用的容器创建方法包括如下步骤:
步骤S601,宿主机41从分布式缓存系统60中读取应用信息。
步骤S602,宿主机41从镜像文件仓库70中获取应用的镜像文件。
步骤S603,宿主机41使用应用的镜像文件为应用创建容器。
步骤S604,宿主机41将创建的应用容器信息存储到分布式缓存系统60中。
请参看图7,其为较佳实施方式的容器资源的自适应调整方法的流程图。该容器资源的自适应调整方法包括如下步骤。
步骤S701,负载均衡器集群20接收到用户请求。该用户请求表示为相应的应用分配容器的请求。
步骤S702,负载均衡器集群20将用户请求转发到相应的调度器31。
步骤S703,调度器31接收用户请求并获取所有容器信息。具体地,调度器31从分布式缓存系统中读取所有容器信息。优选地,调度器31将获取的所有容器信息存储于内存中,且当分布式缓存系统60中容器信息或者用户信息更新时,更新内存中的容器信息或者用户信息。可以理解地,调度器31侦测分布式缓存系统是否有更新的容器信息或者用户信息,并同步更新内存中的数据。优选地,调度器31还根据容器信息将容器采用小根堆方式进行存储,其中,容器信息中的容器负载数作为小根堆节点的键值。
步骤S704,调度器31根据容器信息选择负载最小的容器并修改所选择的容器的信息。在本实施方式中,调度器31从内存中查找负载最小的容器,并修改容器的负载信息和负载的数量。具体地,当选择负载最小的容器时,调度器31对所选择容器的负载数量增加1。
步骤S705,调度器31判断所选择的容器是否未使用。若是,进入步骤S706,若否,进入步骤S709。在本实施方式中,调度器31利用容器的负载数量来判断容器是否未使用。具体地,容器未使用时,负载数量为0。即若调度器31判断出当所选择的容器当前负载数为1时,即原来的负载数量为0时,表示该容器未使用。否则,被选择的容器已使用。
步骤S706,调度器31修改所属的宿主机信息。在本实施方式中,调度器31修改该应用已使用的容器数量。具体地,将所属的宿主机41中该应用已使用的容器数量增加1。
步骤S707,调度器31判断所选择的容器所属的宿主机中该应用已经使用的容器数是否达到预设的数量阈值。若是,进入步骤S708;若否,进入步骤S709。该预设的数量阈值是根据宿主机中该应用当前的容器总数量的百分比X进行设置,其中,0<X≤1。例如X为80%时,若所选择的容器所属的宿主机41中该应用已使用的容器数为该容器总数量的80%时,所属宿主机41为该应用创建相应数量的容器。
步骤S708,调度器31通知所属宿主机为该应用创建相应数量的容器。所属宿主机41为该应用创建容器时,按照该应用的容器总数量的百分比Y进行创建,其中,0<Y≤1。例如,当Y为20%时,该应用当前的容器总数量为30个,则所属宿主机41应该创建6个容器。
步骤S709,调度器31根据修改后的容器信息更新分布式缓存系统60中的容器信息。
步骤S710,调度器31将用户请求重定向到所选择的容器。
请参看图8,其为图7所示的容器资源的自适应调整方法在执行具体的用户请求时的一个具体示例。
步骤S801,负载均衡器集群接收到用户请求。该用户请求表示为一个应用分配容器的请求。
步骤S802,负载均衡器集群20将用户请求转发给一个调度器31。
步骤S803,调度器31从分布式缓存系统60中读取所有容器信息。
步骤S804,调度器31将所有容器信息按照负载数量从小到大进行排序。
步骤S805,调度器31为用户请求选择负载最小的容器,并将所选择的容器的负载数增加1。
步骤S806,调度器31判断所选择的容器原负载数是否为0。若为0,进入步骤S807;反之进入步骤S810。
步骤S807,调度器31将所选择的容器所属的宿主机41中的应用已经使用的容器数增加1。
步骤S808,该应用已经使用的容器数与该应用的总容器数量的百分比是否达到的预设百分比。若达到,进入步骤S809;反之进入步骤S810。
步骤S809,调度器31通知所属宿主机为相应应用创建相应数量的容器。
步骤S810,调度器31根据修改后的容器信息更新分布式缓存系统60中的容器信息。
步骤S811,调度器31将用户请求重定向到所选择的容器。
上述容器自适应创建方法可以在选择的容器所属宿主机41中应用已经使用的容器数量超过预设的数量阈值时,通知所属宿主机41创建更多的容器,实现自适应调整容器资源,从而根据应用在不同时段的负载提供合适的容器资源。另外,上述容器自适应创建方法中还将在内存中存放容器信息,每次分配容器时,调度器31仅从内存中查找负载最小的容器,从而大幅度提升调度器31的速度。另外,容器信息利用小根堆方式存储,可以进一步加快了调度器31查找负载最小的容器,更进一步提升调度器31分配容器的速度。
请参看图9,较佳实施方式的多余空闲容器销毁方法流程图。该多余空闲容器销毁方法包括如下步骤。
步骤S901,宿主机41从分布式缓存系统60中获取宿主机41中所有容器列表。
步骤S902,宿主机41判断容器总数量是否大于预设的最小容器数量。若是,进入步骤S903;若否,流程结束。
步骤S903,宿主机41判断是否存在需销毁的容器。具体地,宿主机41通过容器是否空闲和空闲时间长短来判断是否存在需销毁容器。若存在空闲容器以及空闲容器的空闲时间超过预设的空闲时间,即存在需销毁的容器,进入步骤S904;若不存在需销毁的容器,流程结束。
步骤S904,宿主机41判断容器总数量与需销毁的容器数量的差值是否大于或者等于预设的最小容器数量。若是,进入步骤S905;若否,进入步骤S906。
步骤S905,宿主机41销毁全部需销毁的容器,并从分布式缓存系统60中删除被销毁的容器信息。
步骤S906,宿主机41按照预设顺序从需销毁的容器中销毁部分容器,其中,被销毁的容器数量为容器总数量与预设的最小容器数量的差值,以确保剩余的容器数大于或者等于预设的最小容器数量,并从分布式缓存系统60中删除被销毁的容器信息,容器销毁流程结束。
请参看图10,其为图9所示的多余空闲容器销毁方法的一个具体示例。
步骤S1001,宿主机41从分布式缓存系统60中获取宿主机41中所有的容器列表,该容器列表按照容器的空闲时间从大到小排序。具体地,主机守护进程定期从分布式缓存系统中获取本机中所有的容器列表。
步骤S1002,宿主机41判断宿主机41的容器总数量是否大于预设的最小容器数量。若大于进入步骤S1003;反之流程结束。
步骤S1003:宿主机41判断当前总容器数和需销毁的容器数的差值是否大于预设的最小容器数量。若是,进入步骤S1004,若否,进入步骤S1008。
步骤S1004,宿主机41判断是否存在下一个容器。若存在下一个容器,进入步骤S1005;反之,进入步骤S1008。
步骤S1005,宿主机41判断该容器负载数是否为0。若为0,进入步骤S1006;反之,转向步骤S1004。
步骤S1006,宿主机41判断该容器的空闲时间是否超过预设的空闲时间。若是,进入步骤S1007;若否,转向步骤S1004。
步骤S1007,宿主机标识容器为需要销毁且对“需要销毁容器数”增加1。
步骤S1008,宿主机41销毁所有标记为需销毁的容器,并从分布式缓存系统中删除被销毁的容器信息。
上述多余空闲容器销毁方法可以删除空闲时间超过预设空闲时间的空闲容器,从而可以防止没有服务于用户请求的容器占用了系统CPU和内存等计算机资源,让有限的计算机资源得到有效利用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种容器资源自适应调整方法,其特征在于:所述容器资源自适应调整方法包括:
调度器接收用户请求并获取所有容器信息,其中,所述的所有容器信息包括每个容器的信息和每个容器所属的宿主机的信息;所述容器的信息包括容器的负载信息和负载数量;所属宿主机的信息包括所属宿主机的每个容器的信息和每个应用已使用的容器数量;所述用户请求表示为相应的应用分配容器的请求;
所述调度器根据获取的容器信息选择负载最小的容器;
所述调度器根据容器的信息判断所选择的容器是否未使用;
若选择的容器未使用,所述调度器修改所选择的容器的信息和所属宿主机的信息;
所述调度器根据所属的宿主机的信息判断所属宿主机中所述应用已经使用的容器数量是否达到预设的数量阈值;
若已经使用的容器数量达到预设的数量阈值,所述调度器通知所属宿主机为所述应用创建相应数量的容器;
所述调度器根据修改后的容器信息更新分布式缓存系统中的容器信息;以及
所述调度器将所述用户请求重定向至所选择的容器。
2.如权利要求1所述的容器资源自适应调整方法,其特征在于:所述容器资源自适应调整方法还包括如下步骤:
若所选择的容器已使用,所述调度器根据修改后的容器信息更新分布式缓存系统中的容器信息;
所述调度器将所述用户请求重定向至所选择的容器。
3.如权利要求1所述的容器资源自适应调整方法,其特征在于:所述容器信息以小根堆的方式进行存储,所述容器的负载数量为所述小根堆的键值。
4.如权利要求1所述的容器资源自适应调整方法,其特征在于:在所述调度器获取所有容器信息的步骤之后,还包括如下步骤:
所述调度器根据获取的容器信息将所述容器按照负载数量大小进行排序、以及所述调度器还定期侦测所有容器信息是否更新,当所述容器信息更新时,重新更新所述获取的容器信息并将所述获取的容器信息重新排序;
所述的容器资源自适应调整方法还包括如下步骤:
当所述调度器修改所选择的容器的信息和所属宿主机的信息时,将所述获取的容器信息重新排序。
5.如权利要求1所述的容器资源自适应调整方法,其特征在于:还包括如下步骤:
所述宿主机获取所述宿主机中的所有容器列表;
所述宿主机判断容器总数量是否大于预设的最小容器数量;
若容器总数量大于预设的最小容器数量,所述宿主机判断是否存在需销毁的容器;
若存在需销毁的容器,所述宿主机判断容器总数量与需销毁的容器数量的差值是否大于或者等于预设的最小容器数量,其中,需销毁的容器为空闲时间超过预设空闲时间的空闲容器;
若容器总数量与需销毁的容器数量的差值大于或者等于预设的最小容器数量,所述宿主机销毁全部的需销毁容器;以及
若容器总数量与需销毁的容器数量的差值小于预设的最小容器数量,所述宿主机销毁部分的需销毁容器,其中,被销毁的容器数量为容器总数量与预设的最小容器数量的差值。
6.一种容器资源自适应调整系统,所述容器资源自适应调整系统包括调度器,其特征在于:所述调度器包括分布式缓存读写模块以及容器分配模块,所述容器分配模块用于接收用户请求,所述调度器的分布式缓存读写模块用于响应用户请求获取所有容器信息,其中,所述的所有容器信息包括每个容器的信息和每个容器所属的宿主机的信息;所述容器的信息包括容器的负载信息和负载数量;所属宿主机的信息包括所属宿主机的每个容器的信息和每个应用已使用的容器数量;所述容器分配模块包括选择单元、判断单元、修改单元、以及分配单元,
所述选择单元,用于根据容器信息查找负载最小的容器;
所述判断单元,根据所选择的容器的信息判断所选择的容器是否未使用;
所述修改单元用于当所选择的容器未使用时,修改所选择的容器的信息和所属宿主机的信息;
所述判断单元还根据所属的宿主机的信息判断所选择的容器所属宿主机中所述应用已经使用的容器数是否达到预设的数量阈值;若已经使用的容器数达到预设的数量阈值,所述判断单元通知所属的宿主机为所述应用创建相应数量的容器;
所述分配单元,用于将所述用户请求重定向到所选择的容器。
7.如权利要求6所述的容器资源自适应调整系统,其特征在于:若所述选择的容器已使用时,所述调度器的分布式缓存读写模块用于根据修改后的容器信息更新分布式缓存系统中的容器信息;
所述调度器通过所述分配单元将所述用户请求重定向至所选择的容器。
8.如权利要求6所述的容器资源自适应调整系统,其特征在于:所述分布式缓存读写模块将所述容器信息根据小根堆方式进行存储,所述容器的负载数量为所述小根堆的键值。
9.如权利要求6所述的容器资源自适应调整系统,其特征在于:
所述分布式缓存读写模块还用于定时侦测所述容器信息是否更新,当所述容器信息更新时,重新更新所述获取的容器信息;
所述调度器还包括容器排序模块,所述容器排序模块用于根据所述获取的容器信息,将所述容器按照容器的负载数量大小进行排序;
所述修改单元还用于当所述选择单元选择最小的容器后,修改所选择容器的信息和所属宿主机的信息;
所述容器排序模块还用于当所述获取的容器信息被修改时,重新对所述获取的容器信息进行排序。
10.如权利要求6所述的容器资源自适应调整系统,其特征在于:还包括若干宿主机,每一宿主机包括分布式缓存读写模块、判断单元以及删除单元;
所述宿主机的分布式缓存读写模块获取所属的宿主机中所有容器列表;
所述判断单元判断所属的宿主机中的容器总数量是否大于预设的最小容器数量、是否存在需销毁的容器、以及容器总数量与需销毁的容器数量的差值是否大于或者等于预设的最小容器数量,其中,需销毁的容器为空闲时间超过预设空闲时间的空闲容器;
当所属的宿主机中的容器总数量大于预设的最小容器数量且存在需销毁的容器,以及容器总数量与需销毁的容器数量的差值大于或者等于预设的最小容器数量时,所述删除单元销毁全部的需销毁的容器;
当所属的宿主机中的容器总数量大于预设的最小容器数量且存在需销毁的容器,以及容器总数量与需销毁的容器数量的差值小于预设的最小容器数量时,所述删除单元销毁部分的容器数量,其中被销毁的容器数量为容器总数量与预设的最小容器数量的差值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510918816.7A CN105515864B (zh) | 2015-12-11 | 2015-12-11 | 容器资源自适应调整方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510918816.7A CN105515864B (zh) | 2015-12-11 | 2015-12-11 | 容器资源自适应调整方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105515864A CN105515864A (zh) | 2016-04-20 |
CN105515864B true CN105515864B (zh) | 2019-05-21 |
Family
ID=55723523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510918816.7A Active CN105515864B (zh) | 2015-12-11 | 2015-12-11 | 容器资源自适应调整方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105515864B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095533B (zh) * | 2016-06-14 | 2019-06-18 | 中国联合网络通信集团有限公司 | 服务器扩容方法及装置 |
CN108243055B (zh) * | 2016-12-27 | 2021-07-27 | 中国移动通信集团浙江有限公司 | 一种容器云自动发现与注册系统及方法 |
CN107247793B (zh) * | 2017-06-21 | 2020-03-17 | 平安科技(深圳)有限公司 | Docker镜像仓库的镜像同步方法和镜像同步系统 |
CN109561024B (zh) * | 2017-09-27 | 2022-08-02 | 南京中兴软件有限责任公司 | 容器调度处理方法及装置 |
CN108228313B (zh) * | 2017-11-30 | 2021-11-30 | 中国联合网络通信集团有限公司 | 下游容器的发现方法及装置 |
CN108196940B (zh) * | 2017-12-29 | 2022-03-11 | 华为云计算技术有限公司 | 删除容器的方法和相关设备 |
CN110134454B (zh) * | 2018-02-09 | 2022-06-14 | 聚好看科技股份有限公司 | 一种启动应用程序的方法及其装置 |
CN108769100A (zh) * | 2018-04-03 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种基于kubernetes容器数量弹性伸缩的实现方法及其装置 |
CN108897839B (zh) * | 2018-06-26 | 2020-10-27 | 中国联合网络通信集团有限公司 | 数据接收方法和系统 |
CN109067890B (zh) * | 2018-08-20 | 2021-06-29 | 广东电网有限责任公司 | 一种基于docker容器的CDN节点边缘计算系统 |
CN110289982B (zh) * | 2019-05-17 | 2022-08-23 | 平安科技(深圳)有限公司 | 容器应用的扩容方法、装置、计算机设备及存储介质 |
CN110134519A (zh) * | 2019-05-21 | 2019-08-16 | 中国太平洋保险(集团)股份有限公司 | 一种基于容器平台实现网站管理的控制方法及装置 |
CN110427194B (zh) * | 2019-06-18 | 2024-05-14 | 平安科技(深圳)有限公司 | 容器应用删除方法、装置、计算机设备及存储介质 |
CN110413921B (zh) * | 2019-06-21 | 2022-08-30 | 深圳壹账通智能科技有限公司 | 网页加载方法、装置、计算机设备和存储介质 |
CN117421130A (zh) * | 2023-12-18 | 2024-01-19 | 成都凌亚科技有限公司 | 一种云算力分配系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102509197A (zh) * | 2011-12-01 | 2012-06-20 | 中国移动通信集团广东有限公司 | 一种工作流管理系统及工作流管理方法 |
CN103491024A (zh) * | 2013-09-27 | 2014-01-01 | 中国科学院信息工程研究所 | 一种面向流式数据的作业调度方法及装置 |
CN103530189A (zh) * | 2013-09-29 | 2014-01-22 | 中国科学院信息工程研究所 | 一种面向流式数据的自动伸缩及迁移的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9772831B2 (en) * | 2010-04-26 | 2017-09-26 | Pivotal Software, Inc. | Droplet execution engine for dynamic server application deployment |
-
2015
- 2015-12-11 CN CN201510918816.7A patent/CN105515864B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102509197A (zh) * | 2011-12-01 | 2012-06-20 | 中国移动通信集团广东有限公司 | 一种工作流管理系统及工作流管理方法 |
CN103491024A (zh) * | 2013-09-27 | 2014-01-01 | 中国科学院信息工程研究所 | 一种面向流式数据的作业调度方法及装置 |
CN103530189A (zh) * | 2013-09-29 | 2014-01-22 | 中国科学院信息工程研究所 | 一种面向流式数据的自动伸缩及迁移的方法及装置 |
Non-Patent Citations (2)
Title |
---|
PaaS云中Web容器及调度的设计与实现;余浩维;《中国优秀硕士学位论文全文数据库(电子期刊)》;20150815;第I139-247页 |
基于容器的虚拟机调度算法优化及实现;吴义鹏;《中国优秀硕士学位论文全文数据库(电子期刊)》;20110915;第I138-1263页 |
Also Published As
Publication number | Publication date |
---|---|
CN105515864A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105515864B (zh) | 容器资源自适应调整方法及系统 | |
US11263234B2 (en) | Resource provisioning systems and methods | |
US10268716B2 (en) | Enhanced hadoop framework for big-data applications | |
US8458696B2 (en) | Managing process migration from source virtual machine to target virtual machine which are on the same operating system | |
CN101661486B (zh) | 对包含虚拟机的宿主机硬盘进行碎片整理的方法和系统 | |
KR102310187B1 (ko) | 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 분석 모델 제공 방법 | |
JP2019517043A (ja) | ハイブリッドアプリケーションの自動更新 | |
US20100274762A1 (en) | Dynamic placement of replica data | |
CN105426223B (zh) | 应用加载方法和装置 | |
US11175960B2 (en) | Worker-scheduling method in cloud-computing system and apparatus for the same | |
KR20210075845A (ko) | 네이티브 키-밸류 분산 스토리지 시스템 | |
US10541858B2 (en) | Thin client system, management server, workplace environment setting method and workplace environment setting program | |
CN108924187B (zh) | 基于机器学习的任务处理方法、装置和终端设备 | |
CN114424172B (zh) | 虚拟存储器元数据管理 | |
US20140059094A1 (en) | Making use of a file path to determine file locality for applications | |
CN106250061A (zh) | 文件下载处理方法及装置 | |
KR20150039524A (ko) | 클라우드 시스템, 클라우드 시스템 제어 방법, 관리 서버 및 그 제어 방법 | |
Liu et al. | An improved hadoop data load balancing algorithm | |
CN114924751A (zh) | 一种业务访问请求流量分配的方法和装置 | |
CN107181773A (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
US11281704B2 (en) | Merging search indexes of a search service | |
CN105138649A (zh) | 数据的搜索方法、装置及终端 | |
CN107493309A (zh) | 一种分布式系统中的文件写入方法及装置 | |
CN110958138B (zh) | 一种容器扩容方法及装置 | |
WO2023179784A1 (zh) | 数据处理方法以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |