预测性自动缩放引擎的制作方法
【技术领域】
[0001]实施例一般涉及工作负载管理,并且更具体地涉及在预期到应用的未来工作负载的情况下预测性地缩放云计算环境内执行的应用的多个实例。
【背景技术】
[0002]高效资源分配是对现代云计算环境的持续挑战。例如,特定应用可能需要100个应用实例来处理其峰值工作负载,但是可能仅需要40个应用实例来用于处理其平均工作负载。在此示例中,应用可以被配置为使用40个应用实例来操作,但是此配置将会不能适应应用的峰值工作负载。同样,应用可以被配置为一直使用100个应用实例来操作,但是此配置将会导致资源的低效使用,因为应用实例可能在非峰值工作负载期间处于空闲或未被充分利用。因此,云解决方案可能试图反应性地缩放应用实例的数量来满足波动的工作负载。也就是说,逻辑可以确定应用资源何时处于空闲或者应用何时不能跟上其当前的工作负载,并且可以将应用实例的数量相应地缩小或放大。然而,由于应用的工作负载在实践中几乎是确定地动态的,缩放应用实例的数量以适应增加或减少的工作负载是富有挑战性的。
[0003]作为另一挑战,许多应用的启动过程需要大量时间。因此,如果附加的应用实例直到系统检测到该应用相对于当前的工作负载表现不佳时才被创建,并且应用实例花费大量时间来进行初始化,那么应用可能在等待应用实例被初始化的同时远远落后于其当前的工作负载。此情景可能导致应用的进一步表现不佳,并且在一些情况下可能导致系统反应性地产生甚至更多的附加应用实例来解决表现不佳,从而导致过量的应用实例。此外,在这样的反应性缩放技术不能足够快速地满足正增加的工作负载的情况下,系统可能完全不能赶上,从而潜在地导致中断、错误甚至整个系统故障。
【发明内容】
[0004]本文公开的一个实施例提供了一种方法,该方法包括:在第一时间窗内监控云计算环境内的应用的性能以收集历史性能数据。应用包括多个应用实例。方法还包括在第二时间窗内监控应用的工作负载以收集历史工作负载数据。此外,方法包括分析历史性能数据和历史工作负载数据二者以确定应用的一个或多个缩放模式。该方法还包括:在确定应用的当前状态与一个或多个缩放模式中的一个相匹配时,确定用于预测性地缩放应用的计划。此外,方法包括:基于所确定的计划来预测性地缩放多个应用实例以及在第二时间窗内监控具有经缩放的多个应用实例的应用的性能以收集附加性能数据和附加工作负载数据中的至少一者,其中附加性能数据和附加工作负载数据中的至少一者被用于影响将来的缩放事件。
[0005]其他实施例包括但不限于:包括使得处理单元能够实现所公开的方法的一个或多个方面的指令的计算机可读介质以及被配置为实现所公开的方法的一个或多个方面的系统。
【附图说明】
[0006]因此,以可以详细理解本公开的上述特征的方式,可以参照实施例进行以上简要概述的更具体描述,一些实施例在附图中示出。然而,应注意,附图仅示出典型实施例,且因此不应认为限制其范围,因为本公开可以包括其他均等有效的实施例。
[0007]图1示出根据本文描述的一个实施例的、配置有预测性缩放组件的计算基础设施。
[0008]图2示出根据本文描述的一个实施例的、配置有预测性缩放组件的计算基础设施。
[0009]图3是示出了根据本文描述的一个实施例的、用于确定云应用的性能模式的方法的流程图。
[0010]图4是示出了根据本文描述的一个实施例的、用于预测性地缩放云应用的实例的方法的流程图。
[0011]图5示出根据本文描述的一个实施例的、配置有预测性缩放组件的计算基础设施。
【具体实施方式】
[0012]一般来说,许多大规模应用包括多个不同的应用实例。应用的工作负载可以通过(一个或多个)负载均衡算法的使用来分布至这些应用实例中。通常,以此方式设计应用存在许多优点。例如,可以添加或移除应用实例以动态地缩放应用的大小,从而允许应用处理增加的工作负载(即,通过添加实例)或释放空闲或未充分利用的计算资源(即,通过移除实例)。此外,如果一个应用实例出现故障,则剩余的应用实例可以承担出现故障的实例的工作负载,从而为应用提供冗余。
[0013]管理在云环境中运行的大规模应用(例如,视频流服务及其支持应用)的一个挑战在于,此应用的工作负载可能随时间显著地变化。例如,这样的视频流服务可能在晚上在峰值电视观看时段期间经历其峰值工作负载,而相同的流服务可能在观看者的需求不那么大的清晨时段经历较轻的工作负载。此外,随着视频流服务增加新的观看者,一周中的给定夜晚的峰值工作负载将根据观看者的增长以基本上每周为基础增加。这可能在观众快速增长的时间期间(例如,在用于视频流服务的促销周期期间)特别明显。
[0014]当前,云计算环境可以被配置为基于在给定时间点处应用的当前工作负载来反应性地缩放应用实例的数量。例如,云计算环境可以检测到当前实例化的应用实例不能跟上到来的请求的数量,并且因此可以确定应实例化附加的应用实例来帮助满足应用的当前工作负载。
[0015]虽然此反应性缩放技术在某些情况下(例如,当应用的启动时间相对短时,当工作负载以相对慢的速率改变时等等)可以足够地执行,但是这些技术并不适用于一些应用。例如,特定应用的应用实例可能花费一个小时来完全实例化。在这样的应用的情况下,如果直到应用实例的当前数量不能跟上当前工作负载时才创建附加应用实例(即,反应性缩放解决方案),那么到来的请求的积压可能继续积累一个小时,直到将附加的应用实例带上线。这样,用户可能在该启动时间期间体验到延迟或服务中断。此外,由于工作负载在此冗长的启动时间期间可能继续增加,所以等到附加应用实例被完全初始化的时候,附加应用实例的数量可能不再够用。此问题是复合的,因为在附加应用实例的启动时间期间积聚的请求积压也必须被处理。
[0016]因此,实施例提供用于预测性地缩放用于云计算环境中的应用的多个应用实例的技术。实施例可以在第一时间窗内监控云计算环境内的应用的性能以收集历史性能数据。例如,实施例可以收集诸如应用实例在每单元时间可以处理多少请求以及用于创建新的应用实例的平均启动时间之类的性能信息。此外,实施例可以在第二时间窗内监控应用的工作负载以收集历史工作负载数据。在此,实施例可用收集关于应用的工作负载在一天内如何变化以及工作负载在一星期中的各天如何变化的信息。
[0017]实施例随后可以分析历史性能数据和历史工作负载数据二者以确定针对应用的一个或多个缩放模式(pattern)。例如,实施例可以对收集到的数据执行统计分析以确定指示了应用的工作负载的增加或减少的一个或多个模式。此外,实施例可以确定应用的当前状态与一个或多个缩放模式中的一个相匹配,并且作为响应可以确定用于预测性地缩放应用的计划。例如,实施例可以确定在未来时间点处可能被需要的多个应用实例,并且可以建立用于缩放当前数量的应用实例以在未来的时间点处实现所确定数量的应用实例的时间线。实施例随后可以基于所确定的计划来预测性地缩放多个应用实例。有利地是,这样做提供了能够对应用的工作负载的波动进行预期并且可以相应地缩放应用实例的数量的预测性缩放解决方案。
[0018]图1示出了根据本文描述的一个实施例的、配置有预测性缩放组件的计算基础设施。如图所示,系统100包括多个客户端设备110和云计算环境,它们通过网络115连接。云计算通常是指作为网络上的服务的可缩放计算资源的配设。更正式来说,云计算可以被定义为这样的计算能力:在计算资源与其底层技术架构(例如,服务器、存储设备、网络)之间提供抽象化从而实现对可配置的计算资源的共享池的方便、按需的网络访问,该可配置的计算资源能够用最少的管理工作或服务提供商交互而被快速配设和释放。因此,云计算允许用户访问“云”中的虚拟计算资源(例如,存储设备、数据、应用、甚至完整的虚拟计算系统),而不考虑用来提供计算资源的底层物理系统(或者那些系统的位置)。通常,云计算资源是按使用计费(pay-per-use)地提供给用户,其中用户仅为实际使用的计算资源(例如,用户消耗的存储空间的量或用户实例化的虚拟系统的数量)付费。用户可以在任何时间并且从互联网中的任何地方访问居于云中的资源。
[0019]在此,云计算环境120包括预测性缩放组件125、多个计算节点130以及历史性能数据140。通常,计算节点130反映云计算环境120内的计算系统(例如,虚拟机)。在此,每个计算节点130包括分布式应用的应用实例135。为了此示例的目的,假设托管在计算节点130上的应用