弹性伸缩
弹性伸缩(Auto Scaling)是指系统根据实际需求动态调整资源(例如计算资源、存储资源、带宽等),以满足不同负载情况下的业务需求。通过弹性伸缩,系统能够在高峰期自动增加资源,在低峰期自动释放资源,提高系统的稳定性和性能。弹性伸缩能力是业务稳定性方案中的重要组成部分。它可以应用于各种系统,包括云计算环境、Web应用、数据库等。弹性伸缩的主要目的是提供可靠的系统性能,确保系统在高负载和低负载情况下都能有效利用资源。
弹性伸缩有以下特点:
自动化:弹性伸缩是自动进行的,无需人工干预。系统会根据预设的规则和策略自动调整资源。
实时响应:弹性伸缩能够根据实时的负载情况快速调整资源。当负载增加时,系统会自动增加资源以满足需求。当负载减少时,系统会自动释放多余的资源以节省成本。
灵活性:弹性伸缩可以根据不同的需求和规则进行配置。可以根据不同的指标,如CPU使用率、内存利用率、网络带宽或者自定义业务指标(QPS,RT)等来触发伸缩操作。
具体实施方案如下:
监测和度量:首先需要对系统的负载和资源进行监测和度量,收集关键的性能指标和数据。可以使用监控工具和指标系统来实现。
规则和策略:根据监测数据,制定弹性伸缩的规则和策略。这些规则可以包括资源阈值、触发条件、伸缩策略等。
自动化伸缩:根据规则和策略,配置自动化的伸缩机制。这可以通过云服务提供商的弹性伸缩功能、自动化脚本或者容器编排工具来实现。
监测和优化:定期监测和评估弹性伸缩的效果,并进行优化。根据实际情况,调整伸缩规则和策略,以获得更好的性能和成本效益。
阿里云的弹性伸缩服务(Elastic Scaling Service,简称ESS)具有自动化、降成本、高可用、灵活智能以及易审计的优势。通过简单的操作步骤就可以配置多种伸缩模式,结合业务场景实现自动化的伸缩机制,使系统能够快速响应负载的变化,并根据需求调整资源,从而提供更好的用户体验和服务质量。
ESS的工作流程如下:
传统管理应用实例数有固定实例数、HPA和CronHPA三种方法,分别有各自的缺陷和不足点,比如资源浪费,弹性滞后,以及需要根据业务变化调整定时策略,易用性较差的问题。尤其是在时效性上有极致要求的,则需要更加精准和快速启动的能力。这个时候就需要考虑serverless以及AHPA等更高级能力。
Serverless 容器运行方式提供的ECI (Elastic Container Instance)弹性调度功能,实现更优弹性、免容量规划、按需使用按需计费的能力。在Job类任务、CI/CD、Spark大数据计算、在线应用弹性等场景中可以显著提升应用部署的弹性效率,也可以降低应用的计算成本。
传统的HPA (Horizontal Pod Autoscaler)策略在业务量上涨之后开始扩容,会存在滞后的资源供给不能及时补充业务的问题。 而AHPA (Advanced Horizontal Pod Autoscaler) 可以根据业务历史指标,自动识别弹性周期并对容量进行预测,提前进行弹性规划,解决弹性滞后的问题,实现更快(毫秒级预测,秒级弹性),更稳(主动预测和被动预测相结合),更准(支持分钟级边界保护配置)。