简介
简单来说,弹性伸缩就是根据业务需求和策略自动调整计算能力的服务。传统的被动型方法通过手工定义的规则执行伸缩策略,存在复杂、滞后的问题。预测型(主动型)方法根据历史负载主动预测未来,可以提前扩容,实时调整,避免滞后。
预测型弹性伸缩方法的基本思路包括预测未来负载和伸缩决策两部分。预测未来负载就是一个时间序列预测问题,主要有统计(MA、ES、ARIMA...)、机器学习(SVR、 RVM...)、深度学习(RNN、LSTM...)方法。深度学习方法更适用于长期、不稳定的数据。伸缩决策主要有启发式和强化学习两种。相比启发式方法,强化学习关注多步决策,实现长远收益的最大化。
典型论文
Automatic Cloud Resource Scaling Algorithm based on Long Short-Term Memory Recurrent Neural Network 该论文关注时序数据中的突发流量问题,通过两个LSTM预测CPU利用率。一个用于预测普通情况,一个用于预测突发情况。伸缩决策采用启发式方法,依据预测值与阈值关系判定伸缩,阈值会根据CPU历史动态调整。
Multivariate workload and resource prediction in cloud computing using CNN and GRU by attention mechanism 该论文关注多变量时序负载预测。通过CNN捕捉空间特征以及GRU和Attention结合捕捉时间特征。
A Meta Reinforcement Learning Approach for Predictive Autoscaling in the Cloud 这篇是蚂蚁集团发表于KDD 2022的一篇论文。基本思路来源于3个Insights:
- 负载模式通常是各种周期性的复杂组合。论文通过LSTM+Attention实现负载预测。
- 负载对CPU利用率的影响是异构的。论文通过Attentive Neural Process 实现CPU预测。
- 最优资源分配是一个动态决策过程。论文基于强化学习进行伸缩决策。
其他资料
综述论文:
- A review on prediction based autoscaling techniques for heterogeneous applications in cloud environment
- Technical Study of Deep Learning in Cloud Computing for Accurate Workload Prediction
- Reinforcement Learning-based Application Autoscaling in the Cloud: A Survey
数据集:
- Google: github.com/google/cluster-data
- 阿里:github.com/alibaba/clusterdata