6_Harness驾驭工程可靠性层:混沌工程与服务可靠性管理

news2026/3/27 12:14:27
6_Harness驾驭工程可靠性层混沌工程与服务可靠性管理关键字Chaos Engineering、混沌工程、SRM、服务可靠性管理、SLI、SLO、错误预算、韧性评分、故障模拟、事件响应、事后分析、韧性验证、自动故障注入、最小爆炸半径、Datadog、New Relic、Prometheus一、系统韧性是测出来的不是想出来的很多团队对自己的系统韧性有一种盲目的自信——“我们做了高可用部署”“我们有负载均衡”“我们有多可用区容灾”。但真正的测试是当你的主数据库挂了你的系统真的能自动切换吗当你的第三方支付接口超时了你的订单流程会怎么处理当一个微服务OOM了会产生多少连锁故障这些问题不通过实验是无法回答的。这就是混沌工程存在的理由。二、混沌工程Chaos Engineering实战2.1 与传统测试的区别维度传统测试混沌工程目标验证系统在预期条件下正确工作验证系统在非预期条件下仍能工作测试环境测试/Staging生产环境可控范围故障类型代码Bug、逻辑错误基础设施故障、网络问题、依赖故障失败预期不应该失败可以失败但系统应该优雅降级触发方式手动执行自动编排定期执行2.2 Harness混沌工程的架构Harness Chaos Engineering 架构 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┌──────────────────────────────────────────────────────────┐ │ 控制平面 │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │ │ │ 实验编排 │ │ 韧性评分 │ │ 改进建议引擎 │ │ │ │ Pipeline │ │ Scoring │ │ AI Recommendation │ │ │ └──────────┘ └──────────┘ └──────────────────────┘ │ ├──────────────────────────────────────────────────────────┤ │ 实验执行层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │ │ │ 故障注入 │ │ 安全守卫 │ │ 观察与分析 │ │ │ │ Injector │ │ Guardrail│ │ Observe Analyze │ │ │ └──────────┘ └──────────┘ └──────────────────────┘ │ ├──────────────────────────────────────────────────────────┤ │ 数据平面 │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │ │ │ 目标环境 │ │ 监控集成 │ │ 事件存储 │ │ │ │ K8s/VM │ │ Datadog │ │ Event Store │ │ │ └──────────┘ └──────────┘ └──────────────────────┘ │ └──────────────────────────────────────────────────────────┘2.3 预构建实验库Harness提供了225种预构建的混沌实验覆盖常见故障场景实验库分类 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 类别1基础设施故障 ├── Pod删除模拟节点故障 ├── Pod内存压力OOM Kill ├── Pod CPU压力CPU Throttle ├── 磁盘填充磁盘空间耗尽 └── DNS故障域名解析失败 类别2网络故障 ├── 网络延迟注入200ms-5000ms延迟 ├── 网络丢包5%-100%丢包率 ├── 网络分区模拟网络不可达 ├── 端口阻断模拟防火墙规则 └── 带宽限制模拟网络拥塞 类别3应用层故障 ├── HTTP错误注入返回500错误 ├── 响应延迟慢响应模拟 ├── 进程终止模拟进程崩溃 ├── 文件篡改模拟配置文件损坏 └── JVM故障模拟GC停顿、堆溢出 类别4云平台故障 ├── AWS/Azure/GCP特定故障 ├── 自动扩缩组事件 ├── 负载均衡器故障 └── 存储服务故障 类别5状态与数据故障 ├── Redis缓存清空 ├── 数据库连接池耗尽 ├── Kafka分区不可用 └── 消息队列延迟2.4 安全实验最小爆炸半径在生产环境做混沌实验最怕的就是玩火自焚。Harness通过多层安全守卫来控制爆炸半径安全守卫机制 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Layer 1目标范围限制 ┌────────────────────────────────────────┐ │ 实验目标payment-service (1个Pod) │ │ 排除所有其他服务和Pod │ │ 命名空间staging非production │ │ 自动扩缩暂停防止自动补偿 │ └────────────────────────────────────────┘ Layer 2终止条件 如果以下任一条件触发实验自动终止 · 错误率超过阈值如5% · P99延迟超过基线3倍 · 目标服务不可用健康检查失败 · 人工手动终止 Layer 3时间限制 · 单个实验最长运行30分钟 · 自动回滚所有注入的故障 Layer 4审批机制 · 生产环境实验需要主管审批 · 实验计划提前24小时通知相关团队 · 实验完成后生成影响报告2.5 一个完整的混沌实验# 混沌实验模拟支付服务Pod故障apiVersion:litmuschaos.io/v1alpha1kind:ChaosEnginemetadata:name:payment-service-pod-killspec:appinfo:appns:paymentapplabel:apppayment-servicechaosServiceAccount:litmus-adminexperiments:-name:pod-deletespec:components:env:-name:TOTAL_CHAOS_DURATIONvalue:60# 持续60秒-name:CHAOS_INTERVALvalue:10# 每10秒杀一个Pod-name:FORCEvalue:false# 优雅终止不是kill -9probe:-name:检查支付成功率type:httpProbehttpProbe/inputs:url:http://payment-service:8080/healthmethod:get:criteria:responseCode:200mode:ContinuousrunProperties:probeTimeout:5interval:5三、韧性评分Resilience Score3.1 评分体系混沌实验跑完了系统表现到底怎么样Harness的韧性评分给出了一个量化的答案韧性评分示例 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┌──────────────────────────────────────────────────────┐ │ 韧性评分报告payment-service │ │ │ │ 综合评分78/100 ★★★★☆ │ │ │ │ ┌──────────────┬────────┬───────┬──────────────┐ │ │ │ 实验项目 │ 结果 │ 得分 │ 说明 │ │ │ ├──────────────┼────────┼───────┼──────────────┤ │ │ │ Pod删除 │ 通过 │ 95/100│ 自动恢复30s │ │ │ │ 网络延迟200ms│ 通过 │ 82/100│ 延迟上升15% │ │ │ │ 内存压力 │ 通过 │ 75/100│ 触发OOM恢复│ │ │ │ 数据库故障 │ 部分通过│ 60/100│ 降级但丢失请求│ │ │ │ DNS故障 │ 失败 │ 35/100│ 服务完全不可用│ │ │ │ 网络丢包10% │ 通过 │ 88/100│ 重试机制生效 │ │ │ └──────────────┴────────┴───────┴──────────────┘ │ │ │ │ 改进建议 │ │ 1. [高优先级] DNS故障添加本地DNS缓存 降级逻辑 │ │ 2. [中优先级] 数据库故障实现Circuit Breaker │ │ 3. [低优先级] 内存压力调整JVM堆参数 │ └──────────────────────────────────────────────────────┘3.2 韧性基线与演进韧性评分不是一次性的——它随着系统改进而变化韧性评分演进payment-service ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 月份 综合分 DNS故障 数据库故障 Pod删除 网络 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1月 45 20 40 80 50 2月 58 35 55 85 65 3月 72 65 70 90 75 4月 85 80 85 95 85 5月 92 90 92 97 90 趋势系统韧性持续提升关键薄弱环节逐个消除四、服务可靠性管理SRM4.1 SLI/SLO定义混沌工程测试的是系统出故障时的行为SRM管理的是系统正常运行时的标准。SRM 核心概念 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ SLIService Level Indicator服务质量指标 我们用什么来衡量服务质量 常见SLI · 可用性 成功请求数 / 总请求数 · 延迟 P99响应时间 · 吞吐量 每秒处理的请求数 · 正确性 数据一致的成功事务 / 总事务数 SLOService Level Objective服务质量目标 我们承诺什么样的服务质量 示例SLO · 支付服务可用性 ≥ 99.95%月度 · API P99延迟 ≤ 200ms99%的时间窗口 · 订单处理吞吐量 ≥ 5000 TPS Error Budget错误预算 · 错误预算 1 - SLO目标 · 可用性SLO 99.95% → 错误预算 0.05% → 月允许21.9分钟不可用4.2 错误预算管理错误预算消耗追踪 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ SLO支付服务可用性 ≥ 99.95% 月度错误预算21.9分钟 ┌──────────────────────────────────────────────────┐ │ 3月错误预算追踪 │ │ │ │ 预算总量████████████████████████ 21.9分钟 │ │ 已消耗 ████████░░░░░░░░░░░░░░ 8.2分钟 (37%) │ │ 剩余 ░░░░░░░░░░░░░░░░░░░░░░ 13.7分钟 │ │ │ │ 消耗事件 │ │ · 3月5日数据库切换 → 消耗3.5分钟 │ │ · 3月12日配置错误 → 消耗2.1分钟 │ │ · 3月20日第三方API故障 → 消耗2.6分钟 │ │ │ │ 预算状态健康消耗50% │ │ 建议可以继续推进功能发布 │ │ │ │ 如果预算消耗80% │ │ → 冻结功能发布 │ │ → 专注于稳定性改进 │ │ → 所有PR需要额外的可靠性审查 │ └──────────────────────────────────────────────────┘4.3 SLO与部署策略联动Harness SRM与CD模块的联动是很多团队选择它的关键原因# SLO驱动的部署控制deployment:strategy:Canaryslo_guard:enabled:truerules:-slo:payment-service-availabilitycurrent_budget_remaining:80%# 预算剩余80%时正常发布action:proceed-slo:payment-service-availabilitycurrent_budget_remaining:50%# 预算剩余50-80%时需审批action:require_approval-slo:payment-service-availabilitycurrent_budget_remaining:20%# 预算剩余50%时冻结action:block_deployment这个机制的实际意义是当你的系统不太稳定时错误预算消耗过多自动阻止新功能发布迫使团队优先修复稳定性问题。五、事件响应与事后分析5.1 事件响应自动化事件响应工作流 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 事件触发如APM告警 - P99延迟5s │ ▼ 自动分级 ├── SEV1核心服务不可用→ 立即通知On-Call 管理层 ├── SEV2性能严重下降 → 通知On-Call └── SEV3轻微异常 → 记录事件上班后处理 │ ▼ 自动诊断SRE Agent ├── 关联最近的部署事件 ├── 分析日志和指标变化 ├── 生成可能的原因列表 └── 建议初步修复方案 │ ▼ 执行修复 ├── 自动回滚如果部署引起 ├── 手动干预需要人工判断 └── 降级处理关闭非核心功能 │ ▼ 事后分析自动生成初稿 └── 生成事件报告 ├── 时间线 ├── 影响范围 ├── 根因分析 └── 改进措施5.2 事后分析模板Harness自动生成的事件报告包括以下内容事件报告INCI-2026-0326-001 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 严重级别SEV1 影响服务payment-service, order-service 影响时间2026-03-26 10:15 - 10:4227分钟 影响范围约12,000笔交易受影响 时间线 10:15 - P99延迟开始上升200ms → 2s 10:17 - 错误率超过1%阈值APM告警触发 10:18 - PagerDuty通知On-Call工程师 10:20 - SRE Agent自动分析关联到10:14的部署事件 10:22 - 工程师确认v2.4.0引入了N1查询 10:25 - 决定回滚到v2.3.0 10:28 - 回滚完成流量切回旧版本 10:35 - 指标恢复正常 10:42 - 关闭事件 根因 commit abc123 在 checkout 流程中新增了逐条查询订单明细的逻辑 未使用批量查询接口。当用户订单数量较多时产生N1查询 导致数据库连接池耗尽。 改进措施 1. [代码] 将逐条查询改为批量查询PR #1234 2. [流程] 添加数据库查询数量监控到持续验证 3. [测试] 添加大订单量场景的集成测试 4. [预防] CI阶段添加慢查询检测检查六、与监控工具的集成6.1 集成矩阵工具类型支持的工具用途APMAppDynamics, New Relic, Datadog, Dynatrace性能指标采集日志Splunk, ELK, CloudWatch Logs错误日志分析指标Prometheus, Grafana, CloudWatch基础设施指标告警PagerDuty, OpsGenie, Slack事件通知追踪Jaeger, Zipkin, AWS X-Ray分布式链路追踪七、从单一服务到全系统韧性7.1 演进路径韧性建设三阶段 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 阶段1单一关键服务1-3个月 目标让最核心的服务具备基本韧性 实验Pod故障、网络延迟、内存压力 预期韧性评分从30分提升到60分 阶段2服务依赖链3-6个月 目标验证服务间调用的韧性 实验下游服务不可用、数据库故障、缓存故障 预期韧性评分从60分提升到80分 阶段3全系统韧性6-12个月 目标整个系统级联故障的防护 实验多服务同时故障、全可用区故障、级联雪崩 预期韧性评分从80分提升到90分八、小结混沌工程不是故意搞破坏。它是一种科学实验方法——通过可控的故障注入发现系统中的隐藏脆弱性然后有针对性地修复。Harness的价值在于把这个过程工程化、自动化、持续化了。预构建的实验库降低了入门门槛安全守卫机制让你敢在生产环境做实验韧性评分让你能量化改进效果与SRM的联动让可靠性成为软件交付流程的一部分而不是事后补救。当混沌实验集成到CI/CD流水线中——每次部署后自动运行一轮韧性测试——你的系统可靠性就不只是希望没事了而是每周都在验证没事。系列导航1-架构全景 | 2-AI层 | 3-CI层 | 4-CD层 | 5-Feature Flags | 6-可靠性层 | 7-安全与成本层 | 8-企业实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2454393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…