SLO和SLA是大家常见的两个名词:服务等级目标和服务等级协议。 云计算时代,各大云服务提供商都发布有自己服务的SLA条款,比如Amazon的EC2和S3服务都有相应的SLA条款。这些大公司的SLA看上去如此的高达上,一般是怎么定义出来的呢,本文就尝试从技术角度解剖一下SLA的制定过程。 说SLA不能不提SLO,这个是众所周知的,但是还有一个概念知道的人就不多了,那就是SLI(Service Level Indicator),定义一个可执行的SLA,好的SLO和SLI是必不可少的。再有就是SLI/SLO/SLA都是和服务联系在一起的,脱离了服务这三个概念就没有什么意义了。 Service 什么是服务? 简单说就是一切提供给客户的有用功能都可以称为服务。 服务一般会由服务提供者提供,提供这个有用功能的组织被称为服务提供者,通常是人加上软件,软件的运行需要计算资源,为了能对外提供有用的功能软件可能会有对其他软件系统的依赖。 客户是使用服务提供者提供的服务的人或公司。 SLI SLI是经过仔细定义的测量指标,它根据不同系统特点确定要测量什么,SLI的确定是一个非常复杂的过程。 SLI的确定需要回答以下几个问题:
1. 常见的测量指标有以下几个方面: 性能
可用性
质量
内部指标
因素人
下面通过一个例子来说明一下:hotmail的downtime SLI
2. 测量时的系统状态,在什么情况下测量会严重影响测量的结果
3. 如何汇总处理测量的指标?
比如:某服务X的ticket处理响应时间SLI的
4. 测量指标能否准确描述服务质量?
5. 测量指标的可靠度
SLO SLO(服务等级目标)指定了服务所提供功能的一种期望状态。SLO里面应该包含什么呢?所有能够描述服务应该提供什么样功能的信息。服务提供者用它来指定系统的预期状态;开发人员编写代码来实现;客户依赖于SLO进行商业判断。SLO里没有提到,如果目标达不到会怎么样。 SLO是用SLI来描述的,一般描述为: 比如以下SLO:
设置SLO时的几个最佳实践:
如果Service是第一次设置SLO,可以遵循以下原则
设置SLO时的目标依赖于系统的不同状态(conditions),根据不同状态设置不同的SLO:总SLO = service1.SLO1 * weight1 + service2.SLO2 * weight2 + ... 为什么要有SLO,设置SLO的好处是什么呢?
SLO设好了,怎么保证能够达到目标呢? 需要一个控制系统来:
该控制系统需要重复的执行以上动作,以形成一个标准的反馈环路,不断的衡量和改进SLO/服务本身。 我们讨论了目标以及目标是怎么测量的,还讨论了控制机制来达到设置的目标,但是如果因为某些原因,设置的目标达不到该怎么办呢?也许是因为大量的新增负载;也许是因为底层依赖不能达到标称的SLO而影响上次服务的SLO。这就需要SLA出场了。 SLA SLA是一个涉及2方的合约,双方必须都要同意并遵守这个合约。当需要对外提供服务时,SLA是非常重要的一个服务质量信号,需要产品和法务部门的同时介入。 SLA用一个简单的公式来描述就是: SLA = SLO + 后果
SLA是一个很好的工具,可以用来帮助合理配置资源。一个有明确SLA的服务最理想的运行状态是:增加额外资源来改进系统所带来的收益小于把该资源投给其他服务所带来的收益。一个简单的例子就是某服务可用性从99.9%提高到99.99%所需要的资源和带来的收益之比,是决定该服务是否应该提供4个9的重要依据。 |
|
来自: yujunnujuy > 《运营》