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

QCon大会

2018/10/19 发布于 技术 分类

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