作者:元毅、子白
导读
在云原生容器年代,用户需求面对不同的事务场景:周期性的事务,Serverless 按需运用等。在运用主动弹性中, 会发现这样或那样的问题,其间最需求重视的是弹性滞后、冷启动问题。阿里巴巴云原生团队和阿里达摩院决议计划智能时序团队合作开发 AHPA 弹性猜测产品,该产品首要起点是根据检测到的周期做“守时规划”,经过规划完成提早扩容的意图,在确保事务安稳的情况下,让你真实完成按需运用。
背景
用户对云弹性才能的希望越来越高,这个希望首要来自两方面。一是云原生概念的兴起,从 VM 年代到了容器年代,云的运用形式正在发生变化。二是新式事务形式的兴起,这些兴起的新式事务形式在规划之初便是根据云来建构的,天然就有对弹性的诉求。
有了云,用户不再需求自己从物理机、机房搭建基础设施,云给用户供应了十分弹性的基础设施。云的最大优势便是能够给用户供应弹性的资源供应,特别是到了云原生年代,用户对弹性的诉求也越来越强烈。弹性需求强度在 VM 年代还是人工操作分钟级别的,在容器年代,已经达到秒级的要求,用户面对不同的事务场景,对云的希望和要求也正在发生变化:
-
周期性的事务场景: 新式事务比方直播、在线教育和游戏,这些事务有一个很大的共同点便是有十分显着的周期性,这种周期性促进客户思考面向弹性的事务架构。再加上云原生的理念很天然的就想到按需弹起一批服务起来,用完就释放。
-
Serverless 的到来: Serverless 的中心理念是按需运用,主动弹性。用户不需求容量规划。但当你真实开始运用 Serverless 的时候,会发现这样或那样的问题,其间最需求重视的是弹性滞后、冷启动问题。关于响应时延敏感的事务,这是不可接受的。
那么面对上面的场景,当时 Kubernetes 中现有的弹性计划是否能够解呢?
传统弹性计划面对的问题
一般在 Kubernetes 中管理运用实例数有三种方法:固定实例数、HPA 和 CronHPA 。运用最多的是固定实例数,固定实例数最大的问题便是在事务波谷时形成很显着的资源糟蹋。为了处理资源糟蹋的问题所以有了 HPA,但 HPA 的弹性触发是滞后的,这就导致资源的供应也会滞后,资源不能及时供应可能会导致事务安稳性下降。CronHPA 能够守时弹性,看起来能够处理弹性滞后的问题,但详细守时粒度有多细、事务量有变化时需求频繁地手动调节守时弹性战略吗?如果这样做,这就会带来十分深重的运维复杂度,也很简单犯错。
AHPA弹性猜测
AHPA(Advanced Horizontal Pod Autoscaler)弹性猜测首要起点是根据检测到的周期做“守时规划”,经过规划完成提早扩容的意图。但既然是规划就会有疏漏,所以需求对规划的实例数有一个实时调整的才能。所以本计划有两个弹性战略:主动猜测和被迫猜测。主动猜测根据达摩院 RobustPeriod 算法[1] 识别周期长度然后利用RobustSTL 算法[2] 提起出周期性趋势,主动猜测下个周期运用的实例数量;被迫猜测根据运用实时数据设定实例数量,能够很好的应对突发流量。此外,AHPA 还增加了兜底维护战略,用户能够设置实例数量的上下界。AHPA 算法中最终收效的实例数是主动猜测、被迫猜测及兜底战略中的最大值。
架构
弹性首先是要在事务安稳的情况下进行的,弹性弹性的中心意图不仅是帮用户节约本钱,更是增强事务的全体安稳性、免运维才能和构建中心竞争力。AHPA 架构规划的基本原则:
-
安稳性: 确保用户服务安稳的情况下进行弹性弹性
-
免运维: 不给用户增加额外的运维负担,包含:不在用户侧增加新的 Controller、Autoscaler 装备语义比 HPA 更清晰
-
面向 Serverless: 以运用为中心,面向运用维度的规划,用户无需关心实例个数的装备,按需运用、主动弹性。
架构如下:
-
丰富的数据目标: 支持包含 CPU、Memory、QPS、RT 以及外部目标等
-
安稳性确保: AHPA 的弹性逻辑根据主动预热、被迫兜底的战略,并结合降级维护,确保了资源安稳。
-
- 主动猜测:根据前史猜测出未来一段时间的趋势成果,适用于周期性的运用。
-
- 被迫猜测:实时猜测。针对突发流量场景,经过被迫猜测实时准备资源。
-
- 降级维护:支持装备多个时间区间规模最大、最小实例。
-
多种弹性方法: AHPA 支持弹性方法包含 Knative、HPA 以及 Deployment:
-
- Knative:处理 Serverless 运用场景下,根据并发数/QPS/RT 弹性冷启动的问题
-
- HPA:简化 HPA 弹性战略装备,降低用户运用弹性的门槛,处理运用 HPA 面对的冷启动的问题
-
- Deployment:直接运用 Deployment,主动扩缩容
习惯场景
AHPA 习惯场景包含:
- 有显着周期性场景。如直播、在线教育、游戏服务场景等
- 固定实例数+弹性兜底。如常态事务下应对突发流量等
- 推荐实例数装备场景
猜测作用
敞开 AHPA 弹性后,我们供应可视化页面,用于检查 AHPA 作用。下面是一个根据 CPU 目标进行猜测的示例(与运用 HPA 比较):
说明:
- Predict CPU Oberserver:蓝色标明 HPA 实践的 CPU 运用量,绿色标明猜测出来的 CPU 运用量。绿色曲线大于蓝色,标明经过猜测给出的容量是满足的。
- Predict POD Oberserver:蓝色标明运用 HPA 实践的扩所容 Pod 数,绿色标明猜测出来的扩所容 Pod 数,绿色曲线小于蓝色,标明经过猜测弹性的 Pod 数更低。
- 周期性:根据前史 7 天的数据,经过猜测算法检测到该运用具有周期性。
定论:猜测成果标明,弹性猜测趋势契合预期。
邀测试用
点击此处检查阿里云容器服务 AHPA 弹性猜测产品文档概况。当时 AHPA 已敞开用户邀测,欢迎感兴趣的用户点击文档中“提交工单”位置请求白名单,期待您的试用及反馈。
参考文献
[1] (阿里达摩院决议计划智能时序团队) Qingsong Wen, Kai He, Liang Sun, Yingying Zhang, Min Ke, and Huan Xu. RobustPeriod: Robust Time-Frequency Mining for Multiple Periodicity Detection, in Proc. of 2021 ACM SIGMOD/PODS International Conference on Management of Data (SIGMOD 2021), Xi’an, China, Jun. 2021.
[2] (阿里达摩院决议计划智能时序团队) Qingsong Wen, Jingkun Gao, Xiaomin Song, Liang Sun, Huan Xu, Shenghuo Zhu. RobustSTL: A Robust Seasonal-Trend Decomposition Algorithm for Long Time Series, in Proc. of the 33rd AAAI Conference on Artificial Intelligence (AAAI 2019), 2019, pp. 5409-5416, Honolulu, Hawaii, Jan. 2019.
[3] (阿里达摩院决议计划智能时序团队) Qingsong Wen, Zhe Zhang, Yan Li and Liang Sun. Fast RobustSTL: Efficient and Robust Seasonal-Trend Decomposition for Time Series with Complex Patterns, in Proc. of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (KDD 2020), San Diego, CA, Aug. 2020.