Google的标准做法是通过一个客观的指标来体现一个待优化的系统属性。
对于大多数服务而言,最直接的能够代表风险承受能力的指标就是对于计划外停机的可接受水平。计划外停机时间是由服务预期的可用性水平所体现的,通常我们提供“9”系列的数字来体现,比如可用性为:99.9%、99.99%、99.999%。
可用性计算公式
公式一:基于时间的可用性
可用性=系统正常运行时间/(系统正常运行时间+停机时间)。
举例来说:一个可用性目标为99.99%的系统在一年中停机()分钟就可以达到预计的可用性目标。
公式二:基于请求成功率
可用性=成功请求数/总的请求数
举例:不是所有的请求都是平等的,一个新用户注册失败和一个后台调用新邮件的轮询请求失败不同。
成本:决定一个服务的合理可用性目标时,成本是很重要的考虑因素。
广告服务可以比较好的体现出这种取舍,因为成功与失败直接通过盈利和亏损体现。在为每一项服务确定可用性目标时,可以考虑如下的问题:
· 构建和运维可用性在多一个“9”的系统,收益会增加多少?
· 额外的收入是否能够抵消为了达到这一可靠性水平所付出的成本?
错误预算的构建过程:
· 产品管理层定义一个SLO,确定一项服务在每个季度预计的正常运行时间。
· 实际在线时间是通过一个中立的第三方来预算的:监控系统。
· 二者的差值就是这个季度中剩余的不可靠性预算。
· 正常在线时间高于SLO,只要有错误的预算,就可以发布新的版本。