论文部分内容阅读
云计算是一种以有偿提供计算资源作为服务的商业化模式,其中,如何根据集群负载与用户服务水平,对资源进行合理、有效的分配是云计算研究的重点。但目前云计算的容器领域中还存在如扩缩容缓慢、扩缩容不足等问题,此类问题极大的影响了集群的服务质量。容器扩缩容问题可以分为:水平扩缩容、垂直扩缩容两种,水平扩缩容是指增加提供服务的资源数量,而垂直扩缩容是指提高单个服务资源的性能,两种方式都是提升容器扩缩容效率的有效途径。因此如果在容器扩缩容领域有针对性的对集群负载,CPU利用率等属性进行分析,提出新的容器水平、垂直扩缩容算法,将会有助于提高集群的服务质量和用户满意度。本文针对云计算当中出现的一系列“三”的现象,例如:容器中常见的副本数为三,容器的调度模式可以分为“集中式调度”、“双层调度”和“共享状态调度”三种,容器的扩缩容也需要区分:“扩容”、“缩容”和“抖动”三类情况,因此本文将三支决策引入容器扩缩容领域,给出了两种基于三支决策的容器扩缩容优化算法。(1)针对目前容器调度界主流标准Kubernetes的容器水平扩缩容算法(Horizontal Pod Autoscaler,HPA)无法应对剧烈的请求负载变化、扩缩容不及时所导致的用户体验不佳,甚至集群崩溃等问题,本文结合三支决策,提出一种基于三支决策的容器水平扩缩容算法(Tri Horizontal Pod Autoscaler,THPA)。THPA算法首先将容器集群的CPU利用率记录成一个队列,如果当前有高负载的请求,CPU利用率超过了设定的阈值,此时判定为有高负载请求到达,开始扩容操作,对于容器扩容数量,本文设置两个阈值A,B,通过这两个阈值再进一步对容器扩容幅度进行划分。缩容情况同理,经过模拟实验表明,算法能够有效提高容器的扩缩容效率,同时有效去除扩缩容抖动,保证服务在负载高峰时期的SLA,提升了集群服务质量,保证了集群安全。(2)Kubernetes中的垂直扩缩容是由容器垂直扩缩容算法(Vertical Pod Autoscaler,VPA)实现的,当前云计算中存在多种多样的用户请求,但VPA依然使用一种固定的扩缩容机制来处理容器伸缩问题,这已经无法满足容器垂直扩缩容的发展需求了。因此本文提出了一种基于三支决策的容器垂直扩缩容算法(Tri Vertical Pod Autoscaler,TVPA)来解决上述问题。TVPA算法会将一个容器的CPU历史利用率进行统计,同时借鉴三支决策的思想,将容器的CPU核数与内存限额的扩缩容过程进行三分处理,如果一个容器的CPU利用率在统计的周期内,有足够多的数据大于设定的扩容阈值,那么此容器的CPU和内存限额将会通过特定的算法进行适度的扩容。缩容同理,在此基础上,扩缩容的力度也会进一步进行三分,以此来满足不同情境下的容器扩缩容需求。