故障预测与健康管理 为海量并发业务保驾护航
文章来源:《华为云确定性运维案例集(稳定可靠篇)》
在当今数字化时代,随着出行业务扩张和用户数量的持续增加,企业原有业务系统在支撑海量数据和提供服务方面出现新挑战,需要对现有系统进行迭代更新,不间断地对海量监测数据进行分析,通过运维构建智能故障预测关键能力,实现故障预防,全局资源统一管理,快速精准定位故障,减少运维压力,保障系统持续平稳进行,提升系统可靠性和运维效率。
业务面临的主要挑战:
1. 缺乏主动通知能力:使用DCS资源,出现抖动性问题,无法及时收到通知。
2. 缺乏实时监测和预警:业务采用传统的事后运维模式,缺乏主动预防性维护,无法提前采取规避措施。
3. 预防性维护不足:问题定位慢,故障发生后无法快速定界。
4. 运维能力不足:在抖动出现后,无法进行快速定位定界、影响面识别和故障通知。
业务故障预测与健康管理整体设计优化方案
1、监控能力优化
涉及的资源调低相关的告警阈值和触发次数,单次网络探测和磁盘时延异常下,触发告警,第一时间通知业务。
2、定界能力提升
提前梳理资源的底层依赖,以及关键业务流底层涉及的硬件和组件,每个组件输出对应的健康检查checklist,做到在业务报障下,立即提供涉及的底层资源清单,并组织各个资源健康检查。
3、资源独立部署
业务核心资源独立部署,且迁移到同资源池(需分析可行性),减少跨网元网络访问和故障概率。
4、资源提前扩容
提前扩容业务实例的计算、存储和网络资源,应对负载问题对业务产生的影响。
5、故障预测与故障演练能力提升秒级抖动造成下单核心链路丢单问题解决方案
(1)本地缓存
方案描述:开源库Guava支持很好用的本地缓存策略,支持设置过期时间、多线程并发、容量控制等多种功能(Guava+Redis)。
适用场景:读多写少的服务,例如费用预估等,可以很好的解耦对于缓存实例的依赖。
(2)客户端请求快速失败和重试
方案描述:客户端添加接口重试逻辑,在订单下单失败后,由客户端发起重试,并且对客户显示为“下单中”。具体逻辑如图所示:
约束依赖:
① 需要客户端升级版本,针对老版本客户端无效。
② 需要增加系统过载保护,防止出现重试风暴和雪崩。
③ 常见的防雪崩策略:
a. 关闭重试策略;
b. 网关限流和过载保护,更高级可以支持按照订单处理时长为优先级,降低多次重试订单次数,甚至直接给多次重试订单报错降级;
c. 重试间隔和频率优化算法(优先考虑:指数间隔+随机时间)。
(3)异步订单创建降级
方案描述:在下单接口主流程中引入降级链路,对降级链路产生的订单进行下一步。操作步骤:
a. 如果遇到依赖服务失败,则暂时先给前端返回订单未决状态(或订单成功状态,视业务实现去欸的那个),并且将相关请求
参数异步写入消息队列(或另一故障域的Redis等)中;
b. 定时任务消费降级链路的订单信息消息,并且生成订单数据保存到数据库中;
c. 降级链路的订单最大存活时间可配置(Xs等);
d. 下单接口增加是否重复下单校验判断(X元组查询异步重复订单)。
方案约束:
a. 需要引入小部分资源(其他故障域),双故障域同时故障概率极低;
b. 订单业务状态解耦,需要引入可以判断订单全局唯一性的业务逻辑(例如:用户ID + 时间 + 用车类型 + 出发地 + 目的地,x元组元素组成唯一性逻辑);
c. 订单下单和操作等接口,需要实现幂等性(订单重复判断 + 订单状态机幂等性)。
(4)多Region多活业务Cell化,降低爆炸半径
方案描述:
a. 业务多活改造,按地域或者片区进行业务拆分,单Region跨AZ多Cell化部署;
b. 缩小爆炸半径,降低抖动时的业务影响。
6、运维能力沉淀:构筑SRE运维管理和质量运营体系
通过自动化运维健康管理平台,建立系统健康管理体系,帮助夯实系统健康管理的基础。
(1)数据收集和监测:自动监控系统海量数据,实时了解系统运行状态和异常情况;
(2)故障预测和预警:系统海量应用数据分析,预测设备故障并提前发出预警;
(3)数据报表和分析:生成系统健康和维护相关的图表,持续优化维护策略;
(4)远程监控和智能维护:系统监测运行状态,自动诊断和智能维护。
1. 业务量从百万单/日升至千万单/日,帮助用户提升出行效率,实现业务快速、持续高效增长。
2. 故障/隐患当前及未来预测可视,基于业务故障/隐患优先级可视等功能,构建网络自运维、智运维、易运维能力,大大节省维护成本,达成降本增效8%的目标。
3. 各层组件和网元构建秒级抖动/闪断的监控检测能力,实现提前通知秒级抖动能力,达成现网问题5分钟响应目标,同时将问题定位时间缩减90%时长,由原来问题定位100+分钟提升在10分钟内。
4. 联合业务进行破坏性测试,优化秒级抖动造成出行下单核心链路丢单问题,实现现网稳定性99.95%的SLA,整体P3&P4A事件单环比下降67%。
5. 优化业务中间件,减少由于线程池等待造成的时延。
故障预测与健康管理是一个持续改进的过程,针对业务缺乏故障预测关键能力等问题,通过确定性运维体系支撑系统优化,帮助构建智能故障预测关键能力,实现业务全面容器化、业务双活改造、性能建模、系统架构升级等,形成能力层与产品层的沉淀,不断提升故障预测与健康管理能力,支撑业务持续稳定发展。
- 点赞
- 收藏
- 关注作者
评论(0)