省时省力又省心!去哪儿高峰期资源保障之智能扩缩容

B站影视 内地电影 2025-08-26 18:23 2

摘要:刘丹,2017年加入去哪儿旅行,目前担任国内酒店测试经理。长期致力于全流程质量保障体系,酒店测试环境体系建设。

文章概览

一、背景

二、整体方案

系统结构图业务流程介绍算法部分介绍

三、保障数据情况

四、后续规划

作者介绍

刘丹,2017年加入去哪儿旅行,目前担任国内酒店测试经理。长期致力于全流程质量保障体系,酒店测试环境体系建设。

一、背景

一些流量突增事件如考研、国考准考证打印高峰期等,会导致酒店业务量骤增,如果超出应用承载上限,会引起服务性能严重下降,限流或崩溃等风险,对生产带来损害。

另外五一十一等出游高峰, 虽然有HPA(Horizontal Pod Autoscaler), 但在做稳定性保障时,需要手动去计算各系统扩容机器数并手动进行扩容和缩容, 计算精度不足且效率低下。

所以如果能提前评估事件影响,预估所需容量,对受影响的服务提前自动扩容,对保障线上服务的稳定性的同时提升运维效率是非常有价值的。

二、整体方案

覆盖事件类型:

EXAM:准考证打印类事件(如考研、国考),一般会带来酒店的业务突增

HOLIDAY:旅游,出行具有很强的节假日效应,大型的节假日一般会呈现预期内的业务高峰,无突增现象

ACTIVITY:促销类活动,如大促、秒杀等,会带来业务突增

1、系统结构图

1)流量日历平台整合业务监控,运维团队(Ops)提供应用+环境维度下CPU核数数据,平台通过接口提供给算法团队提前进行模型训练。

2)流量平台确定业务预估最高峰订单值/qps值,调用算法平台发起预测任务. 算法组将业务预估高峰值转换为高峰场景下应用预计使用CPU总核数给到流量平台。

3)流量平台调用Ops接口, 将CPU总核数给到Ops, Ops将CPU总核数转换成预估实例数. 并设定定时自动扩缩容实例任务。

2、业务流程介绍

流量日历事件生命周期分为九个阶段,包含预判→待评估→评估中→评估完成→任务创建→扩容中→扩容完成→复盘→结束。

1)热点事件录入

事件来源:支持携程热点事件同步+人工创建事件两种方式录入 , 事件录入后,进入预判状态。

2)事件预判

根据事件具体情况判定本次事件是否需要自动扩缩容。如判定否,进入结束状态, 如判断是,进入待评估业务量阶段 (待评估状态)。

3)待评估阶段

该阶段目标是预估最高峰场景下业务量,主要根据基准值和业务涨幅两个指标计算。

系统根据公式计算:预估高峰业务量 = 基准值 ×(1+业务涨幅),然后进入下一阶段(评估中状态)。流量日历平台调用算法接口根据预估高峰业务量获取各应用+环境维度下实际使用CPU量预测值。

指标指标规则指标内容热点详情2024年国家公务员考试11.20打印准考证影响时间2023-11-20 00:00:00-2023-11-20 02:00:00高峰时间点2023-11-20 00:00:00评估时间点2023-11-18 00:00:00扩容时间点2023-11-19 23:00:00缩容时间点2023-11-20 02:00:00影响范围国内酒店业务预估量xxx业务预估增长率xxx

评估中状态, 流量日历平台会根据事件基准值和业务涨幅(增长率)计算出高峰期业务值, 然后调算法接口, 预测对应高峰业务值下,各应用+环境维度使用的CPU总核数。

流量日历平台将算法提供预估核数,加上安全阈值后,得到平台预估核数。

公式:算法预估实际使用核数×(1+安全阈值)=平台预估实际使用核数

再调用0ps接口, Ops根据公式(平台预估实际总核数÷机器CPU阈值÷机器配置=预估实例数 ) 计算出高峰期业务预估机器数。此时评估阶段结束,进入Ops创建定时扩缩容任务阶段。

流量日历根据算法和Ops计算后,可以在流量日历平台查看预估具体数据,示例如下:

5)创建任务

Ops根据流量日历平台提供的预计扩缩容时间,和Ops计算出预估机器数创建定时扩容任务, 任务具体信息包含扩缩容时间与机器实例数。 这里扩缩容使用的资源为本地机器+云上资源两部分,通过适当的上云资源比例策略保障核心服务的稳定性。

目前整体的扩缩策略为保证稳定性,在高峰期前预定时间点实际智能扩容, 高峰后预定时间点自动慢速智能缩容, 定时扩缩容任务创建后,根据设定事件点进行实际自动化定时扩缩容,扩缩容执行时会有消息提示通知。

6)复盘阶段&结束

任务高峰期后,会进入复盘阶段。复盘阶段主要根据事件准确率和覆盖率两个指标来衡量预测情况。

①指标介绍

a人工设置增长阈值,区分实际增长和自然波动范围.M单应用实际高峰期总核数N应用前三天事件同时间段最高峰总核数均值K单应用预测高峰期总核数

如果 M >N (1+a%), 表示该应用为实际增长应用。

如果K>N (1+a%),表示该应用为预估增长应用

准确率(预测增长的应用数 与 实际增长的应用数 的交集)/ 预测增长的应用数满足 M >N (1+a%), 表示该应用为实际增长应用.满足 K>N (1+a%),表示该应用为预估增长应用.覆盖率(预测增长的应用数 与 实际增长的应用数 的交集)/ 实际增长的应用数

②复盘数据介绍

以下为复盘页面主要数据, 包含业务涨幅偏差、预估覆盖率、预估准确率。以及向下拆分可以到应用+环境维度的资源使用数据。根据复盘数据分析算法/流程可改进项,填写复盘总结,提交后事件为结束状态。

事件预估覆盖率100%事件预估准确率95.92%预估业务量xxx业务线xxx业务量基准参照时间2023-11-13 00:00:00-02:00:00预估增长率100%基准值500业务预估值1000实际业务量950实际增长率90%安全阈值5%平台预估总核数20000实际扩容总核数19500

1)算法模型预测准确性保障

① 模型构建-应用选择

在前期数据准备阶段, 由于模型算法是分析订单量和应用cpu直接的关系,需要重点关注影响(CPU)的因素, 以及应用范围的选取。

哪些应用可以这么做订单量和CPU资源数正相关CPU资源量不微量订单影响占主导

由于应用系统中还区分了部署环境ENV的概念,同一个应用系统下不同环境ENV承接的流量可能有差异,负责业务有差异,所以最后最小维度划分在应用+ENV维度。最终选取了订单量和CPU正相关的应用+环境作为训练范围, 对于CPU微量以及不受订单影响的不列入训练范围。

②模型训练和指标验证

训练算法:使用神经网络算法进行模型训练,最终通过订单量预测CPU使用资源。

平均绝对百分比误差MAPE模型准确度0.08订单量与CPU使用量相关性系数相关性(可行性)0.91实际CPU占用均值资源使用体量32.5预测CPU占用与真实值差值的平均绝对值误差实际影响3.1

③模型定时更新+离线验证

模型离线定时更新

学习数据:高峰事件+近期数据(t-10)更新策略:新模型效果不次于线上保障模型时效性和事件鲁棒性减少 Ops 运维带来的影响模型每日反馈线上效果保证线上在有效时使用内部 IT 提醒 + 报警

2)hpa 扩缩容安全策略

安全策略具体内容最大副本数安全限制目前各应用最大副本数由各业务线根据业务场景和DB/Redis等下游资源限制等因素综合配置,当预测超过最大副本数,限制创建并对应消息提示,负责人可根据情况评估调整。最小副本数安全限制设置阈值a%,当预测实例数小于当前最小副本数(1-a%)会触发限制。保障机器数预测过低场景稳定性。

三、项目数据&价值

指标内容应用预估平均覆盖度96%应用预估平均准确率89%价值衡量单次事件高峰期节约人工运维效率3pd(人天)/次,年化节约270pd(人天)。通过算法预估机器资源,比人工预测资源节省约20%。

四、后续规划

方向内部智能扩缩容场景覆盖提升1.全应用场景覆盖提升,包含实体机/KVM场景,存储层DB/Redis资源2.容量扩容安全性检测提升,增加对DB、ZK等连接资源检查算法优化方向提升借助AI,提升业务量预估准确性,提升业务指标与应用CPU关联性后续运营推广计划业务线范围扩大,逐步覆盖公司各业务线,实现全司资源调度O能化

来源:dbaplus社群

相关推荐