容器资源自适应调整方法及系统的制作方法_2

文档序号:9754332阅读:来源:国知局
。判断单元4102从获取的容器列表中逐个查找容器,并判断查找到的容器是否未使用以及未使用的容器空闲的时间是否达到预设的空闲时间。
[0048]当查找到的容器未使用且超过预设的空闲时间,则判断单元4102标记该容器是需销毁的容器。优选地,判断单元4102中还设置有需销毁容器数量。需销毁的容器数量初始值为0,每当标记一个需销毁的容器时,需销毁的容器数量增加I。此外,判断单元4102还用于判断当前的容器数量与需销毁的容器数量的差值是否大于预设的最小容器数量。若当前的容器数量与需销毁的容器数量的差值大于预设的最小容器数量时,删除单元4104对需要销毁的容器标注为需销毁。若当前的容器数量与需销毁的容器数量的差值小于预设的最小容器数量时(即剩余容器数会低于最小容器数量),此时需要销毁的容器已经寻找完,判断单元4102不再判断是否继续需要销毁容器;删除单元4104将需销毁的容器进行销毁。由于容器列表按照预设的顺序(即容器的空闲时间从长到短的顺序)进行排序,因此,判断单元4102可以优先查找出空闲时间较长的容器,以使删除单元4104优先删除空闲时间较长的容器。
[0049]可以理解地,在一些其他实施方式中,若容器列表并未按照该预设的顺序进行排序,容器管理模块410的工作过程如下。模块判断单元4102将全部需销毁的容器(空闲时间超过预设空闲时间的容器)查找出来。然后,判断单元4102判断当前的容器数量与需销毁的容器数量的差值是否大于预设的最小容器数量。若是,删除单元4104删除全部的容器。若否,删除单元4104删除部分的需销毁的容器,其中,被删除的需销毁的容器数量为当前容器数量与预设的最小容器数量的差值。优选地,删除单元4104同样按照预设的顺序(即容器的空闲时间从长到短的顺序)对部分的需销毁的容器进行删除。
[0050]分布式缓存读写模块412还用于当容器管理模块410创建容器时,将创建的容器信息保存到分布式缓存系统60,在销毁容器时将销毁的容器信息从分布式缓存系统60中删除。
[0051 ]负载均衡器集群20包括多个负载均衡器21。多个负载均衡器21同时工作,用于将用户请求分发到调度器集群30的调度器31。由于负载均衡器集群20包括若干负载均衡器21,当部分负载均衡器21宕机时,用户请求仍然可以分发,因此,负载均衡器集群20具有高可用性。其中,该用户请求通过应用管理平台10输入。
[0052]调度器集群30包括多个调度器31。调度器31用于根据用户请求为相应的应用分配最小的容器,并更新分布式缓存系统60中的容器信息和用户信息。每个调度器31包括分布式缓存读写模块310、容器排序模块312、以及容器分配模块314。
[0053]在一些实施例中,分布式缓存读写模块310用于侦测分布式缓存系统60中的用户信息和容器信息,并当分布式缓存系统60中的用户信息或者容器信息更新时,获取更新后的用户信息或者容器信息。
[0054]容器排序模块312用于根据获取的容器信息将容器按照预设顺序排序。具体地,该预设顺序为容器的负载从小到大的顺序。
[0055]容器分配模块314,用于选择出负载最小的容器分配给相应的应用。容器分配模块314还可修改容器负载数量,并产生排序指令控制容器排序模块312对被分配的容器进行次序调整。如此,容器分配模块314将容器分配给用户后,容器负载将发生变化,容器排序模块312将对被分配的容器进行调整,保证容器位于容器列表中的正确位置。同时,容器分配模块314还产生更新指令以控制分布式缓存读写模块310将更新后的用户信息和容器信息写入分布式缓存系统60中。
[0056]请结合参看图3,容器分配模块314包括选择单元3140、判断单元3142、修改单元3144、以及分配单元3146。
[0057]选择单元3140还用于根据排序结果选择出负载数最少的容器。
[0058]判断单元3142用于判断所选择的容器是否未使用。在本实施方式中,判断单元3142通过所选择的容器的原负载数量判断该容器是否未使用。由于容器在未使用时,容器的负载数量为O。因此,当所选择的容器的原负载为O时,表示所选择的容器未使用。反之,所选择的容器已使用。
[0059]修改单元3144用于修改容器的负载数和所属的宿主机41中该应用已使用的容器数量。当选择单元3140选择出容器时,修改单元3142对该容器的负载数增加I,对所属的宿主机41中该应用已经使用的容器数量增加I。
[0060]分配单元3146将用户请求重定向至所选择的容器,让所选择的容器处理该用户请求。
[0061]判断单元3142还用于判断所选择的容器所属的宿主机41中该应用已使用的容器数是否达到预设的数量阈值,并当已使用的容器数达到预设的数量阈值,产生创建指令以控制所属宿主机41为应用创建相应数量的容器。在本实施方式中,该预设的数量阈值是根据宿主机41中该应用当前的容器总数量的百分比X进行设置的,其中,0〈X< I。例如X为80%时,若所选择的容器所属的宿主机41中该应用已使用的容器数达到该应用的容器总数量的80%时,所属宿主机41为该应用创建相应数量的容器。在实施方式中,所属宿主机41为该应用创建容器时,按照该应用的容器总数量的百分比Y进行创建,其中,0〈Y < I。例如Y为20 %时,应用当前的容器总数量为30个,则所属宿主机41应该创建6个容器。数量阈值可以理解地,在一些实施方式中,所属宿主机41为该应用创建容器时,还可以按照预设的数量Z进行创建。该数量Z为大于I的整数。
[0062]在另一些实施例中,分布式缓存读写模块310用于侦测分布式缓存系统60中的用户信息和容器信息,并当分布式缓存系统60中的用户信息或者容器信息更新时,获取更新后的用户信息或者容器信息并写入内存中。如此,用户请求分配容器时,分布式缓存读写模块310只需根据内存中的容器信息中选择负载最小的容器,从而大幅度提升调度器31分配容器的速度。另外,当容器分配模块314选择负载最小的容器并修改容器的负载信息和使用状态信息后,分布式缓存读写模块310将修改后的容器信息写入内存中。
[0063]请结合参看图4a_4c,在另一些实施例中,在存储容器信息时,采用小根堆方式进行存储。堆是一种经过排序的二叉树,而小根堆的特点是根节点的值是所有节点键值中最小的。修改某节点的值,或者插入新的节点时,只需要很少量的运算就可以继续保持小根堆的有序,因为容器负载信息会因为用户请求而经常变化,又因为需要能够快速找出当前负载最小的容器。优选地,当存储容器信息时,采用小根堆方式进行存储。其中,容器的负载数可被作为小根堆节点的键值。
[0064]基于小根堆方式保存容器信息后,每次为用户请求分配容器时,只需要将小根堆中第一个节点代表的容器分配给用户即可,因为小根堆中第一个节点就是键值最小的节点。这个节点就代表当前负载数最小的容器。为用户请求分配容器、修改容器负载数之后,需要对小根堆进行调整,保证堆中第一个节点代表的容器是当前负载数最小的容器。
[0065]图4a是使用小根堆保存容器信息和进行容器分配的示意图。图中每个圆圈表示一个容器,圆圈中的数代表容器的负载数(图示省略了容器的其他信息)。根节点代表的容器的负载是6,表示这个时刻,负载最小的容器。图4b表示为用户请求分配由根节点表示的负载最小的容器后,这个容器的负载增加I,变成7。图4c表示对小根堆进行调整后的结果。调整后新的根节点代表的容器的负载是6,是当前负载最小的容器。
[0066]以上,基于内存对分布式缓存进行加速,并采用小根堆的数据存储结构进行数据变更的读写优化后,较仅是基于分布式缓存的读写速度增加100倍以上(从原来的几百毫秒加速为几毫秒),从而实现容器的快速分配与快速自适应。
[0067]请参看图5-10,其为较佳实施方式的容器资源自适应调整方法的流程图。容器资源自适应调整方法包括以下的子方法:应用的镜像文件生成方法(如图5)、应用的容器创建方法(如图6)、容器资源的自适应调整方法(如图7和图8)、以及多余空闲容器的容器销毁方法(如图9和图10)。
[0068
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1