1.什么是SLA?
SLA全称为Service Level Agreement,服务等级协议。
SLA是指服务提供者(Provider)对客户(Customer)的一个可量化的服务承诺,常见于大型分布式系统中, 用于衡量系统服务是否稳定健康的常见方法。
2.SLA常见的衡量指标有哪些?
SLA是一种服务承诺,因此指标具备多样性,业界主流的常用指标包含:可用性、准确性、系统容量和延迟。
2.1.可用性(Availability)
系统服务能正常运行所占时间的百分比,业界对可用性的描述,通常采用年故障时长。比如,数据中心机房划分为不同的等级,如T1~T4,它们的可用性及年平均故障时间如下表所示:
网络服务的可用性,通常会折算为不能提供服务的故障时间长度来衡量,比如典型的5个9可用性就表示年故障时长最大为5分钟,其他指标如下表所示:
对于大多数系统而言,4个9的可用性,或每年约52.6分钟的系统中断时间即可被认为是具备高可用性。
可用性指标一般通过监控系统或服务的运行状态来计算,例如使用心跳检测、健康检查API或者第三方监控服务(如Pingdom、New Relic、Datadog等)。当服务不可达时,这些工具会记录下服务中断的时间,从而帮助计算整体的可用性。
2.2.准确性(Accuracy)
准确性是指系统服务中,是否允许某些数据是不准确或者丢失,如果允许这样的情况发生,用户的容忍度(百分比,可以接受的概率)是多少,常见的衡量方式为:基于服务周期内的错误率计算准确性。
错误率=周期内有效的错误请求数/周期内有效的总请求数
例如,我们在一分钟内发送100个有效请求到系统中,其中有5个请求导致系统返回内部错误,那我们可以说这一分钟系统的错误率是 5 / 100 = 5%,准确率为1 - 5% = 95%。
对于云服务而言,计算请求错误率时,计算时间范围越长越有利,因为时间越长,总请求数越多,错误率越有可能降得更低,一般有实力得服务商都会 从客户角度计算错误率,按照5分钟的粒度来计算,因为5 分钟是业界典型的机器故障恢复时间,能够快速修复机器,降低系统的错误率。
每5分钟错误率=每5分钟有效的错误请求数/每5分钟内有效的总请求数
最终准确率为:准确率=1-错误率。
2.3.系统容量(Capacity)
指系统能够支持的负载量,一般会以每秒的请求数为单位来表示,与CPU的消耗、外部接口、IO等等紧密关联,常见衡量指标:QPS、TPS、并发数、响应时间。
2.3.1.QPS(Query Per Second)
每秒处理的查询数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,也即是最大吞吐能力。
2.3.2.TPS(Transactions Per Second)
每秒处理的事务个数,是软件测试结果的测量单位,一个事务是指一个客户机向服务器发送请求到服务器做出反应的全过程,客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,系统整体处理能力取决于处理能力最低模块的TPS值。
2.3.3.并发数
系统可以同时承载的正常使用系统功能的用户的数量(同一时间处理的请求/事务数),与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标
2.3.4.响应时间
一般取平均响应时间。
2.3.5.常用的评估公式
针对上述指标,有以下常用的计算公式。
QPS=并发数/平均响应时间
最大QPS(峰值QPS)=(总PV数*80%)/(每天秒数*20%)
TPS=并发数/平均响应时间
最大TPS(峰值TPS)=(总PV数*80%)/(每天秒数*20%)
机器数=峰值QPS/单机QPS
机器数=峰值TPS/单机TPS
其中,峰值QPS或峰值TPS计算原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。
示例:公司早上8:00上班,7:30到8:00这30分钟的时间内用户需登录签到系统进行签到,公司员工总数为1000人,平均每一个员上登录签到系统的时长为5分钟。
QPS = 1000/(30*60) 事务/秒
RT(平均响应时间为) = 5*60秒
并发数= QPS*平均响应时间 = 1000/(30*60) (560)=166.7
2.4.延迟(Latency)
延迟(Latency),指系统收到用户请求到响应请求之间的时间间隔,在定义延迟的SLA时,常用p95和p99这样的延迟声明,这里的p指的是percentile,也就是百分位的意思,如果p95是1秒的话,那就表示在100个请求里面有95个请求的响应时间会少于1秒,而剩下的5个请求响应时间会大于1秒,P99同理。
2.5.其他指标
包含以下7个。
2.5.1.响应时间(Response Time)
衡量从请求发出到系统开始响应所需要的时间,比如网页加载时间、API调用的响应时间等。
一般通过客户端或服务器端的日志记录请求的起始和结束时间差,或者使用APM(应用性能管理)工具,如Java的JVM监控工具、Spring Boot Actuator配合Micrometer与Prometheus等,他们可以自动收集HTTP请求响应时间。
2.5.2.恢复时间目标(Recovery Time Objective,RTO)
在系统故障后,恢复正常服务所需要的最大时间。
2.5.3.恢复点目标(Recovery Point Objective,RPO)
在灾难恢复计划中,数据丢失的可接受最大时间窗口。
2.5.4.数据完整性(Data Integrity)
确保数据在传输和存储过程中的完整性和一致性。
2.5.5.安全性(Security)
关注系统的安全保护级别,如未经授权访问次数、数据泄露事件发生的可能性等。
2.5.6.支持与维护服务(Support and Maintenance)
包括问题解决时间、技术响应时间、更新与升级的频次和通知期限等。
2.5.7.网络质量(Network Quality)
对于涉及网络传输的软件服务、网络带宽、丢包率、抖动等也是重要的SLA指标。