1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > SRE学习笔记2:衡量系统稳定性的指标

SRE学习笔记2:衡量系统稳定性的指标

时间:2019-01-21 12:57:28

相关推荐

SRE学习笔记2:衡量系统稳定性的指标

目前业界有两种衡量系统可用性的方式,一个是时间维度,一个是请

求维度,我们先来看这两个维度的计算公式。

这两个公式很简单,我们得深入进去,一一来看。

我们先来看时间维度的系统可用性。用一句话来概括:时长维度,是从故障角度出发对系统

稳定性进行评估。

这类计算方式我们最常见,毕竟你的系统在一段时间里不出现故障,就说明它很稳定嘛!不

过,在真实的使用场景中,怎么样才算是可用时长,什么情况下又是不可用时长,这个是怎

么定义的呢?

时间维度:Availability = Uptime / (Uptime + Downtime)

请求维度:Availability = Successful request / Total request

我们知道,一个人如果发烧了,体温一般会超过 37.5 度,那如果这个人的体温正好达到这

个温度,是不是代表他一定是生病了呢?依据生活经验,我们知道不一定。为什么呢?因为

我们判断一个人是否发烧生病,不是只看这一次、一时的体温,还要看他体温是不是持续超

过 37.5 度。

所以,这里就涉及到一个测量方法和判定方法的问题,包含三个要素:一个是衡量指标,比

如体温就是衡量指标;第二个是衡量目标,达到什么目标是正常,达不到就是异常,低于

37.5 度算正常,超过 37.5 度就是异常,但是单次测量不能说明问题,我们可以多次测量,

比如 6 次中有至少 4 次低于 37.5 度才算正常,转化成比例的话就是 67%;第三个是影响

时长,比如持续超过 12 小时。

对应到系统上,我们也会用一系列的标准和判定逻辑来说明系统是否正常。比如,系统请求

状态码为非 5xx 的比例,也就是请求成功率低于 95%,已经连续超过 10 分钟,这时就要

算作故障,那么 10 分钟就要纳入 Downtime(宕机时间),如果达不到这个标准,就不

算作故障,只是算作一般或偶然的异常问题。

这里同样有三个要素:衡量指标,系统请求状态码;衡量目标,非 5xx 占比,也就是成功

率达到 95%;影响时长,持续 10 分钟。

因此,只有当问题达到一定影响程度才会算作故障,这时才会计算不可用时长,也就是上面

公式中的 Downtime。同时,我们还要求一个周期内,允许的 Downtime,或者说是系统

的“生病时间”是有限的,用这个有限时间来约束系统稳定性。

针对时长维度的稳定性计算方式的弊端,就是稳定性只与故障发生挂钩。

这就需要第二种衡量方式了,也就是从请求维度来衡量系统可用性。

用一句话来说,请求维度,是从成功请求占比的角度出发,对系统的稳定性进行评估。

请求维度的系统可用性同样包含三个关键要素,第一个衡量指标,请求成功率;第二个衡量

目标,成功率达到 95% 才算系统运行正常;第三个是统计周期,比如一天、一周、一个月

等等,我们是在一个统计周期内计算整体状况,而不是看单次的。

你看,这种方式对系统运行状况是否稳定监管得更为严格,不会漏掉任何一次问题的影响,

因为它对系统整体运行的稳定性判定,不仅仅会通过单次的异常影响进行评估,还会累计叠

加进行周期性的评估。

到这里,我们就总结出一条至关重要的经验了:故障一定意味着不稳定,但是不稳定,并不

意味着一定有故障发生。

在SRE 实践中,通常会选择第二种,也就是根据成功请

求的比例来衡量稳定性:

Availability = Successful request / Total request

在 SRE 中就是设定稳定性衡量标准的 SLI 和 SLO 的过程。

具体来看下这两个概念。SLI,Service Level Indicator,服务等级指标,其实就是我们选

择哪些指标来衡量我们的稳定性。而 SLO,Service Level Objective,服务等级目标,指

的就是我们设定的稳定性目标,比如“几个 9”这样的目标。

SLI 和 SLO 这两个概念你一定要牢牢记住,接下来我们会反复讲到它们,因为落地 SRE 的

第一步其实就是“选择合适的 SLI,设定对应的 SLO”。

我们以电商交易系统中的一个核心应用“购物车”为例,给它取名叫做 trade_cart。

trade_cart 是以请求维度来衡量稳定性的,也就是说单次请求如果返回的是非 5xx 的状态

码,我们认为该次请求是成功的;如果返回的是 5xx 状态码,如我们常见的 502 或 503,

我们就判断这次请求是失败的。

但是,这个状态码只能标识单次请求的场景。我们之前讲过,单次的异常与否并不能代表这

个应用是否稳定,所以,我们就要看在一个周期内,所有调用次数的成功率是多少,以此来

确定它是否稳定。比如我们给这个“状态码返回为非 5xx 的比例”设定一个目标,如果大

于等于 99.95%,我们就认为这个应用是稳定的。

在 SRE 实践中,我们用 SLI 和 SLO 来描述。“状态码为非 5xx 的比例”就是 SLI,“大于

等于 99.95%”就是 SLO。说得更直接一点,SLO 是 SLI 要达成的目标。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。