云服务过载控制“三部曲”
来源:华为云确定性运维专刊(第五期)
作者:郑磊
过载控制有非常重要的三部曲:过载感知、过载保护、过载干预,其关键能力需要围绕这三部曲进行规划与建设,本文重点介绍过载感知与过载干预的实践能力。
一、过载现象
现象1:关键节点出现过载,所有的请求都出现异常。典型案例:如黑客发起对网络服务超百倍的瞬间查询,结果导致数据库CPU冲高,其他正常客户的网络请求被阻塞。
现象2:无序抢占,每个请求/每个租户都出现性能损失。典型案例:某个租户发起对所使用存储池的未设置有效的QoS控制,造成瞬间XXXGb/s的带宽请求,所有使用该存储池的用户延迟增加,出现过载。
现象3:性能没问题,但是依赖的服务出现性能瓶颈。典型案例:几万个VM同时请求云解析服务,超过了安全封堵系统的边界阈值,造成云解析服务处理正常,被安全封堵系统禁止。
二、过载感知
1. 过载感知的关键能力:过载感知是过载控制的基础能力,需要尽可能早的感知到过载现象和过载源,进而支撑过载对象事件的响应和对过载源的及时处置,达成分钟级感知过载现象和过载源的目标。
过载现象与过载源感知能力建设阶段
过载现象感知能力:基于监控告警服务在线获取到过载现象。主要从固定阈值(经验预置),和动态阈值(算法推荐)方式获取。
过载源感知能力:基于监控告警服务在线获取造成过载的源头,即谁的什么行为造成了过载。包括两种方式:第一种是基于已知经验的计算和排序;第二种是基于算法的在线推荐,给出可能的过载源,支撑过载源的在线感知、在线推荐和在线对象关联。
2. 过载感知的能力架构:建立完整的“业务监控模型”,监控整个业务流程的健康状况,无需过多手工筛选和多个系统切换,准确发现、快速定位问题,实现分钟级感知过载现象,获取过载源。设计基于工作负载数据分析的过载感知算法,支撑过载现象感知、过载源快速准确推荐目标达成。
3. 过载感知实践
1)解决异常度高但非根因的误诊断场景:
2)减少负相关指标对异常排序的干扰场景:
三、过载干预
过载干预主要是通过对服务的状态感知,并通过在入口层、能力层、服务层和数据层进行分层控制与治理。通过感知过载及时获取过载现象,通过过载控制服务主动采取过载控制措施,达成服务的平稳运行,控制影响半径和范围。
过载控制的典型架构
过载干预关键能力:
1.入口层:支持基于API接口、租户等级、租户名、URL、域名粒度的过载控制。
2.能力层:支持过载时的自动扩缩容,支持基于接口/用户/域名的限流,支持基于接口/用户/域名的降级,支持按照用户/接口的熔断,支持按照集群/按节点/按微服务的隔离。
3.服务层:支持集群级的过载控制、本地节点/服务的过载控制,基于动态策略的过载控制。
4.数据层:
1)流控策略:支持策略集中下发以及基于作业优先级的过载控制,支持基于业务时延的过载控制,支持基于作业负载的过载控制。
2)状态分析:支持过载控制结果分析,过载控制的时效性,过载控制的假阳性、假阴性结果分析。
3)日志告警:实现与过载感知信息的互动,支持过载日志记录,相关过载控制有监控告警的基础能力,支持过载感知,及过载控制的时效性感知,过载控制收敛与治理效果监控可视。
四、结束语
在此,引用都江堰的故事为过载控制做更通俗易懂的解释。古时,四川盆地水患问题长期困扰当地居民且不可控,古人利用西北高、东南低的地理条件,根据江河出口处特殊的地形、水脉、水势,乘势利导,无坝引水,自流灌溉,实现了都江堰的水患的有效治理。关键能力有:
√ “鱼嘴”,承担都江堰的引水工程。正常雨季保证了当地人们的农田灌溉和饮水,雨季避免发生洪水。
√ “飞沙堰”,承担都江堰的防洪作用。遇洪水时自行冲破堤岸,让大量河水流入外河,同时形成漩涡,把多余的沙石抛到外河,定期清洁。
√ “宝瓶口”,承担都江堰的“控制门”作用,整体比较窄,有限制水流的功能。
云服务开发和使用场景下,客户的一次业务促销,公网的一次网络风暴,外部的一次黑客批量攻击或安全扫描,这些都会造成云服务请求过载,或者作业过载排队。本文介绍的过载感知、过载干预的实践有效支撑了云服务及云上应用过载类问题的有序分析,系统性治理。希望这些实践和能力可以为云服务开发及应用开发的过载控制挑战带来参考,也欢迎感兴趣的同仁们参与到过载控制类技术难题分享和讨论,探讨新技术与关键能力的演进。
- 点赞
- 收藏
- 关注作者
评论(0)