故障演练在稳定性测试中的应用与实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 故障演练在稳定性测试中的 应用与实践 美团金融服务平台
2. 自我介绍 毛伟宁,2018年加入美团, 从事支付业务质量和稳定性保障相关工作, 故障演练、质量运营等专项主R。 2018
3. 线上故障发生时,故障处理的几个段位
4. 目录 01 业务介绍及面临的挑战 02 解决策略分析 03 故障演练介绍 04 故障演练实践
5. 业务介绍-用户视角的美团支付 线上支付场景 线下支付场景
6. 业务介绍-架构视角的美团支付
7. 面临的挑战-业务和系统规模大、稳定性要求高 业务承载量持续增加 系统复杂度不断提升 团队规模不断变大 数据来源于美团2021Q4财报 早中晚高峰特征明显 亿级用户 百万级商户 亿级日订单 上千个服务 ...... 高峰期1分钟不可用,就将产生严重线上故障。
8. 目录 01 业务介绍及面临的挑战 02 解决策略分析 03 故障演练介绍 04 故障演练实践
9. 解决策略-稳定性保障的常见策略 链路梳理 技术实现 监控报警 应急预案 流程规范
10. 解决策略-数据分析(找到突破点) 合计 70% 合计 67% 如果预案完备、监控报警健全、人员处理得当, 线上严重故障数量会不会减少呢?
11. 解决策略-理论与实践过程分析 •成熟性:软件产品避免由于软件故障而导致失效的能力; •容错性:在软件出现故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力; •易恢复性:在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。 提高发现问题能力和响应速度 故障发生 监控报警 人员应急 降低故障程度、缩小影响范围 预案处理 迭代能力:故障不再发生、或者快速响应 统计恢复
12. 目录 01 业务介绍及面临的挑战 02 解决策略分析 03 故障演练介绍 04 故障演练实践
13. 故障演练是什么? 混沌工程:是一门新兴的技术学科,它的初衷是通过 实验性的方法,让人们建立复杂分布式系统能够在生 产中抵御突发事件能力的信心。 --Principles of Chaos Engineering 故障演练之我见:是遵循混沌工程实验原理并结合业 务实践,模拟故障场景,沉淀故障预案,并验证其有 效性,从而帮助系统提升容错性和可恢复性的手段。
14. 故障演练的主要作用 验证平台健壮 性,验证已 知、防范未知 校验监控报警 有效性 考察故障处理 流程、人员应 急能力
15. 故障演练的整体方案
16. 人员应急通用预案 常见预案及关注项 人员应急: • 网络问题、人员互备; • ACK: Acknowledge,表示告知已收到。 通用预案: • 机器禁用:宿主机故障、服务节点异常,服务发布异常; • 服务回滚:服务发布后不符合预期,需要优先回滚止损再排查问题; • 服务重启:服务节点异常,但是无法确定原因,可以通过重启尝试恢复; • 服务扩容:请求量变大,服务容量不够,服务扩容。
17. 场景及预案-服务内部 常见问题及故障场景 外部依赖 自身功能缺陷、线程池等系统参数设置不合理、不具备容错能力; 导致订单错误(状态机不一致等)、订单丢失甚至系统不可用。 系统间调用 常见预案及关注项 • Bugfix、回滚 服务内部 • 主动GC • 一致性检查(BCP、对账等); • 自动补偿机制(业务重试、补单系统、对账补单等); • 人工补偿机制(数据清洗、人工补单等)
18. 场景及预案-系统间调用 常见问题及故障场景 外部依赖 系统间调用 服务雪崩 服务内部 下游服务不可用 常见预案及关注项 • 超时机制:防止线程长时间等待; • 熔断降级:采用备用逻辑或者功能丢弃。 • 限流:控制流速或者流量整形; 流量激增
19. 场景及预案-外部依赖之基础组件 常见问题及故障场景 外部依赖 系统间调用 常见预案及关注项 • 业务本身的容错补偿能力、主从切换、降级(链路梳理与 服务内部 依赖分级); • 切换或者降级前确认: 1) 是否需要业务代码上线、配置变更; 2) 是否为单机部署,能否操作; 3) 操作的业务补偿机制等。
20. 场景及预案-外部依赖之机房、网络 常见问题及故障场景 网络问题可能导致业务超时、慢查询等,甚至产生因业务逻辑处理不当 导致的成功率下降等线上故障。 常见预案及关注项 机房:机房切换,分为业务维度的切换、包括基础组件在内切换两种。 1)单机房性能及容载力进行有效评估;2)经历一个线上高峰期;3)快速切换。 网络: • 动态路由、丢包重传、自动补包、自动排序; • 超时参数设置是否合理; • 业务兼容重试、幂等、并发逻辑。
21. 故障注入核心原理 SDK接入方式 基础资源故障原理 • 依赖agent插件,作为一个go服务运行在root权限下,通过 执行脚本模拟故障。 故障类型 原理 杀实例 磁盘故障 网络故障 DNS故障 kill DD命令 tc/iptables命令 篡改/etc/hosts Java Agent机制 • 使开发者可以动态改写目标类底层字节码, 从而实现jvm层面的AOP。 • 需要注入的位置硬编码接入,注解方式或者调用API。
22. 演练环境
23. 监控报警 关注项 监控: •关键节点和指标的监控埋点是否有效; •监控阈值是否合理。 报警: •是否配置报警; •报警接收人; •报警方式; •报警升级机制等(短信、电话、上级)
24. 过程和结果观测 系统维度 业务维度
25. 故障周知 关注项 • 故障级别:故障定级标准; • 谁来做通知; • 故障通知形式; • 故障通知的时间点; • 故障周知范围及升级机制; • 故障模板内容。
26. 故障处理SOP
27. 目录 01 业务介绍及面临的挑战 02 解决策略分析 03 故障演练介绍 04 故障演练实践
28. 平台能力建设 平台化演练 工具支持演练 人工组织演练
29. 人工组织演练 人工电话演练 通讯工具人工发报警 问题 • • • • 人工成本高; 支持场景少; 演练方式缺乏真实感; 技术同学的演练参与度和实际 效果有限。
30. 工具支持演练 报警演练平台 提高演练平台易用性,降低演练成本;
31. 平台化演练-整体架构 优点 • • • • • • 场景丰富; 功能健全; 形式多样; 支持手动演练和自动化演练; 报告可视化; 等等。
32. 常态化故障演练 •常态化演练:每周/月/季度针对所有团队全部演练一 次,避免遗忘生疏、加深印象。 •节假日前演练:如中秋国庆春节,集中演练基本功, 保障节假日值班。 •新人针对性演练:集中演练基本功,更快融入工作, 熟悉基本功操作。
33. 专项故障演练 职责划分 运营机制 结果统计 演练场景 与迭代 及计划 演练实施
34. 最终的成果展示 典型问题 2021年常态化应急+专项演练 演练次数 参与人次 • 重度依赖,无法降级; • 预案缺失或者无效; 缺少监控、报警或阈值不合理; • 故障导致的功能性缺陷; 1000+ 7000+ • • 系统容量问题; 演练达标率 发现问题数 • 系统流量分配不均等; 80%+ 100+ • 人员不会或者操作不熟练等。 故障演练最佳实践 20+ 收获 • 有效提高了系统的容灾、容错能力 • 增强了员工的安全意识和故障应对能力 • 流程更加清晰、团队协作更加高效。 • 从而帮助系统稳定性显著提升。
35. 未来规划 丰富演练场景 演练自动化 演练智能化
36. 更多技术干货 欢迎关注“美团技术团队”

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 20:29
浙ICP备14020137号-1 $Map of visitor$