时间:2025-11-26 10:38
人气:
作者:admin
(1)故障预防阶段:主动构建系统韧性
从技术规范和架构设计层面,推动系统具备抗风险能力。
(2)故障发现阶段
(3)故障处理阶段
(4)故障复盘
(1)如何衡量服务可用性
第一种是考虑时长。
MTBF = MTTF + MTTR。衡量稳定性:AO = MTBF / (MTBF + MTTF)
第二种是从服务质量来看:请求维度:成功率 = 成功请求数/总请求数
这里不能统计单个请求,而是看一段时间的概率分布,如5xx占比。计算一段时间的5xx占比达到5%,持续10min。这一块一般用几个9来衡量。
在定目标前要想清楚3件事:1)花多少钱;2)业务能接受多少“小意外”(比如视频网站和支付系统的容忍度就不同);3)系统现在的“底子”如何(若系统本身遗留的技术债务过多,强行定太高目标可能不现实,得先修复基础问题)。
3个9:指系统全年可用时间达到99.9%,这个目标比较容易实现,成本也低。
4个9:指全年可用时间达到99.99%,全年最多只能“崩8.76小时”,这个目标对技术、人力、硬件的要求极高,投入成本会成倍增加)。
选择稳定性目标涉及了测量方法和判断方法,包含三个要素:
这里的衡量指标就是SLI,目标是SLO,如果针对服务质量还有SLA。
(2)如何选择合适的SLI,设置合理的SLO
Google提出的五大“黄金指标”:容量、可用性、时延、错误率、人工介入。
(3)如何及时发现问题
若选择好了指标,接下来要采集数据提炼出想要的指标。
SRE工具及主要从数据源采集,分析生成监控指标,判定这些指标阈值触发告警后,及时响应。包括以下几个部分:
技术债务分为三类:不良代码积累;业务建模;业务架构设计。
(1)慢接口:这会严重影响服务的吞吐量,最终反馈到用户体验上,造成客户流失。这里不采用平均耗时,因为接口延迟满足长尾效应,延迟越大危害越大,所以优先优化延迟高的接口。一般蔡康永接口的延迟百分位第99位来衡量(如后端服务P99<100ms,即99%的服务响应时间都是小于100ms的)
(2)异常接口:接口错误率,实时反映服务可用性。根据业务哦让人都可用性可以设置成3个9或4个9.
(3)慢sql:随业务迭代,未经优化的SLQ可能会产生雪崩。
(4)稳定依赖:能不依赖就不依赖,能少依赖就少依赖,尽量依赖稳定的方向。
参考:
https://www.infoq.cn/article/vbufppurg9lfelrogx3t
设置稳定性目标一般需要考虑:成本,业务容忍度,当前业务的现状。大部分时候 4 个 9 目标比 3 个 9 目标投入成本要高很多。有些底层的服务,稳定性要求就比一般配套服务的高。比如 doctor 医生服务的稳定性就需要 99.99,它一旦有问题很可能就是波及全站的范围。由于很多历史原因,“大泥球”的服务积累的技术债务会很多。这时候针对这个服务定一个合理的指标,比定一个标准的指标要好很多。
下一篇:战略工程师的思维
【Devops】Unity 与 Unreal 引擎的私有化 Dev