A3--金梦珂--B站JAVA框架故障演练平台实战.pdf
1、B站Java故障演练实战金梦珂B站资深测试开发工程师金梦珂哔哩哔哩 资深测试开发工程师目前主要负责压测平台、故障演练平台、自动化测试平台等平台的建设,负责相关方案在公司内各业务的方案落地,助力业务的稳定性保障体系建设。毕业后曾就职于百度上海,从事大数据相关的质量工作。目录C O N T E N T S1.故障演练背景2.B站故障演练平台3.如何实现Java框架故障注入4.总结故障演练背景01混沌程:在分布式系统上进行实验的学科,旨在提升系统容错性,建立系统抵御生产环境中发生不可预知问题的信心。故障演练背景01混沌工程的诞生混沌工程起源于2008年,由Netflix的工程师提出,旨在通过主动引入
2、故障来验证系统的弹性和恢复能力,从而提升系统的稳定性和可靠性。02混沌工程的发展2010-Chaos Monkey开发2012-simain army开源2016-Gremlin商用化2019-ChaosBlade开源2020-ChaosMesh.03混沌工程的原则 建立稳定状态的假设 多样化现实世界事件 在生产环境运行实验 持续自动化运行实验 最小化“爆炸半径”故障演练:在混沌工程思想指导下的具体实践,通过向目标系统注入真实可能发生的故障来考量系统的稳定性。B站故障演练平台02哔哩哔哩故障演练平台发展历程201920212024起步探索基于 chaosblade 在容器环境下注故障,使得业务
3、可以在线下 UAT 环境进故障注重新设计重新设计故障演练平台,打通服务树适配公司内部go语的kratos框架,增加了实验管理、场景实验等能,简化户操作能升级框架能补,适配公司内部Java语的Pleiades框架,满更多业务需求打通更多内部平台,优化动化故障演练能,集成到CI流程哔哩哔哩故障演练平台发展历程一次稿件服务异常带来的线上事故:1.依赖的接口超时后,由于整体接口超时配置不足,未返回降级数据,导致首页空窗。2.稿件服务异常,播放的降级数据中未储存秒开地址,导致降级数据不可播放,播放器加载失败。3.直播间粉丝勋章法加载。.暴露的问题:1.UAT和线上环境不一致,难以完全表现出线上情况2.业
4、务之间依赖混乱,强弱依赖不合理故障事件分类哔哩哔哩故障演练平台故障演练平台架构期望:更贴近业务层面逻辑尽可能在线上真实环境执行平台设计原则:轻量:业务接入成本低高性能:线上演练时对性能影响小低耦合:SDK与控制面低耦合,SDK负责底层能力,控制面负责高层应用场景如何实现JAVA框架故障注入03Java故障演练框架技术选型优点缺点Chaos Monkey for Spring Boot无需额外开发故障注入逻辑可兼容公司框架进行二次开发需要业务方加入新的依赖需要更改应用启动脚本和spring boot绑定jvm-sandbox兼容所有JVM应用理论上可以对任何场景进行故障注入需要开发故障注入功能c
5、haosblade基于jvm-sandbox适应性高无需额外开发故障注入逻辑不支持grpc和公司标准无法适配公司平台方案调研Java故障演练框架Chaos Monkey for Spring Boot接入方式应用启动Java故障演练框架PATHDescriptionMethods/chaosmonkey/statusChaos Monkey 状态GET/chaosmonkey/enable启动Chaos MonkeyPOST/chaosmonkey/disable关闭Chaos MonkeyPOST/chaosmonkey/watchers获取Watchers配置GET/chaosmonkey





点击查看更多