百度信息流产品动态降级以及故障自愈实践

微风

2019/03/24 发布于 技术 分类

文字内容
1. 百度信息流产品动态降级以及故障自愈实践 郑焱 百度搜索公司共享技术平台部
3. • 背景介绍 • 机房容灾能力建设 • 单机房故障动态降级以及自愈实践
4. 个人介绍 百度共享技术平台部资深工程师,百度稳定 性工程团队核心成员。 2009年入职百度,曾负责百度搜索,地图, 糯米等核心产品的业务运维和架构优化工作; 当前为百度 APP&信息流业务稳定性方向的 负责人 关注于稳定性工程建设,故障自愈,架构优 化等多个技术方向
5. 百度APP信息流-基于搜索和用户画像的个性化推荐产品
6. 百度APP日活超1.5亿,信息流爆发性增长,带来巨大的运维挑战 Ø 每周数千次模块迭代,带来巨大的变更风险 Ø 策略计算日益复杂,核心模块性能不断退化 Ø 用户访问爆发性增长,流量峰值迭创新高 业务单机房故障占比 > 60% 占比高 变更数量 2500 2000 1500 1000 500 0 1月 2月 3月 4月 5月 6月 7月 8月 9月
7. 一个典型的故障止损过程,存在止损时间过长&二次伤害的问题 潜伏 代码bug 定位 感知 开始上线 在处理其他 问题,报警 响应遗漏 单机房完成 报警 响应 止损 第一时间执行预案 止损 高峰期切流量造成 容量过载
8. 一个典型的故障场景—容量退化导致止损操作中服务过载 1.变更导致的容量退化 2.容量数据评估误差 初始状态(评估容量) 3000 3000 A 初始状态(实际容量) 3000 3000 B 3000 A C 1500 2000 1800 1500 故障 注:单位 qps 3000 C 2300 2000 调度A机房流量到B,C机房 3000 B A 2100 1800 容量过载 3000 2650 2300 B 3000 C 2650 2100
9. 高峰期单机房故障自愈整体思路 架构容灾 容量满足 流量调度 •具备单机房容灾能力 •满足高峰期 n+1冗余能力(降级) •具备动态流量调度能力
10. • 背景介绍 • 机房容灾能力建设 • 单机房故障动态降级以及自愈实践
11. 单机房容灾能力建设常见问题 服务存在单点 服务跨机房混联 XX.baidu.com XX.baidu.com 机房1 机房2 机房1 服务不满足N+1冗余 XX.baidu.com 机房2 机房1 机房2 机房3 服务A 服务A 服务A 服务A 服务A 服务A 服务A 服务B 服务B 服务B 服务B 服务B 服务B 服务B 服务C 服务C 服务C 服务C 服务C 服务C 单点服务C在机房1故障 服务整体故障 机房1或者机房2故障无法通过切流量 止损,服务整体故障 机房1故障,机房2和机房3不足以承担机房1的流量, 单机房故障引发多机房故障
12. 信息流产品机房容灾能力具体实践 逻辑服务隔离 • 多IDC建设,逻辑服务单元内闭包 消除单点 • 推动业务消除单点服务;对应DB、REDIS要求依赖平台架构上 具备主备切换的执行能力 依赖解耦 • 针对依赖的广告等核心业务进行上下游之间解耦,具备流量调 度能力 容量规划 • 容量N+1冗余或者降级状态下具备N+1冗余 • 周级别在线压测,容量过载熔断信号,实时计算容量负载 盲测 验收
13. • 背景介绍 • 机房容灾能力建设 • 单机房故障动态降级以及自愈实践
14. 故障止损决策-理想模型抽象 风险评估 核心指标 感知 • • • • 事件准确性 事件时效性 容量风险 干预状态 风险评估 决策 策略计算 • • 故障特征提取 损益比计算 • • • 容量风险 干预状态 执行状态检查 执行 执行反馈 策略计算 • • 人工干预 流量执行方案 生成 降级执行方案 生成
15. 单机房故障自动止损整体方案 算法平台 异常检测 算法 运维 知识库 监控平台 感知 服务止损决策器 决 策 负载均衡器 异常事件 DB 服务降级平台 流量调度 算法 执 行 开发框架 部署 运行环境 运维操作 时序指标 DB 容量 DB
16. 信息流产品降级策略设计-从产品功能角度评估每一个请求的重要性 页面 返回 用户 下拉 推荐请求类型比例 type3 type2 16% 8% APP启 动 用户 上滑 type1 43% type0 33%
17. 信息流产品降级策略设计-抽样 A/B 测试获取降级损益数据
18. 信息流产品降级方案设计-个性化cache提高用户降级的效果体验 手 动 刷 新 自 动 刷 新 缓存用户历 史无展现推 荐结果 服务接入层 降级 词典 个性化 Cache REC A RANK REC B REC C
19. 信息流产品降级决策-动态降级实现低成本容量满足 降级比例 = (全局流量 *增长系数 – 极限容量) /可降 级流量 极限容量=压测极限容量*退化系数 100% 90% 冗余 冗余 冗余 冗余 可降级流量 可降级流量 可降级流量 可降级流量 重要流量 重要流量 重要流量 重要流量 80% 70% 60% 50% 40% 30% 20% 10% 0% 机房 A 机房 B 机房 C 机房 D
20. 信息流产品降级方案设计-降级平台设计 手 动 刷 新 自 动 刷 新 自动接口 预案平台 rank 设置降级比例 个性化 Cache 运维 知识库 服务降级操作执行平台 服务接入层 降级 手动接口 降级比例计算 时序指标 DB 损益比计算 容量 DB 执行降级 释放容量
21. 流量切换风险控制—风险最小策略以及分步流量调度 风险最小原则 第一次调度 初始状态 3000 3000 A B 3000 3000 C 3000 A B 第二次调度 分步调度原则 3000 3000 C 3000 A B 3000 C 2650 2500 2000 1500 故障 1800 2000 1300 2000 1800 熔断反馈原则 1 容量指标 2 功能指标 3 模块指标
22. 自愈效果总结 感知 传统监控 Before • 人工感知不及时 监控自动触发 After • 监控自动化触发,避免 遗漏,提升响应速度 • 高的准确率和召回率 决策 执行 人工决策 人工执行 • 局部信息,依赖人工经验 • 决策速度慢,甚至错误决 策,故障扩散 自动化程序决策 • 收集全局信息算法自动决策 • 可精确控制降级比例以及流 量调度粒度 • 依赖人工的熟练度 • 存在误操作导致容量过 载风险 标准执行框架 • 通过程序执行,经过严 格测试,保证健壮性
23. 单机房故障自愈效果分析 止损时间 16 15 14 12 10 8 6 6 4 2 0 人工操作 自动止损 • 止损效率:2min-7min • 较人工止损时间缩短60%以上