大数据_SLA,SLO,SLI 名词解读

参考 : SLI、SLO和SLA,一文彻底搞懂!!!_木给哇啦丶的博客-CSDN博客

前言


SLO和SLA是大家常见的两个名词:服务等级目标和服务等级协议。

云计算时代,各大云服务提供商都发布有自己服务的 SLA 条款,比如 Amazon 的 EC2 和 S3 服务都有相应的 SLA 条款。这些大公司的SLA看上去如此的高大上,一般是怎么定义出来的呢?本文就尝试从技术角度解剖一下 SLA 的制定过程。

说 SLA 不能不提SLO,这个是众所周知的,但是还有一个概念知道的人就不多了,那就是 SLI(Service Level Indicator),定义一个可执行的 SLA,好的 SLO 和 SLI 是必不可少的。

再有就是 SLI/SLO/SLA 都是和服务联系在一起的,脱离了服务这三个概念就没有什么意义了。

术语清单

SLA = Service Level Agreement = 服务质量/水平协议(对外承诺)

SLO = Service Level Objective = 服务质量/水平目标(对内产品目标)

SLI = Services Level Indicator = 服务质量/水平指标(对内产品服务质量评价指标)

Service 什么是服务?


简单说就是一切提供给客户的有用功能都可以称为服务。

服务一般会由服务提供者提供,提供这个有用功能的组织被称为服务提供者,通常是人加上软件,软件的运行需要计算资源,为了能对外提供有用的功能软件可能会有对其他软件系统的依赖。

客户是使用服务提供者提供的服务的人或公司。

SLI


SLI是经过仔细定义的测量指标,它根据不同系统特点确定要测量什么,SLI的确定是一个非常复杂的过程。

SLI的确定需要回答以下几个问题:

要测量的指标是什么?

测量时的系统状态?

如何汇总处理测量的指标?

测量指标能否准确描述服务质量?

测量指标的可靠度(trustworthy)?

1. 常见的测量指标有以下几个方面:


性能

  • 响应时间(latency)
  • 吞吐量(throughput)
  • 请求量(qps)
  • 实效性(freshness)
  • 可用性
  • 运行时间(uptime)
  • 故障时间/频率
  • 可靠性

质量

  • 准确性(accuracy)
  • 正确性(correctness)
  • 完整性(completeness)
  • 覆盖率(coverage)
  • 相关性(relevance)

内部指标

  • 队列长度(queue length)
  • 内存占用(RAM usage)

因素人

  • 响应时间(time to response)
  • 修复时间(time to fix)
  • 修复率(fraction fixed)

下面通过一个例子来说明一下:

hotmail 的 downtime SLI

错误率(error rate)计算的是服务返回给用户的error总数

如果错误率大于X%,就算是服务down了,开始计算downtime

如果错误率持续超过Y分钟,这个downtime就会被计算在内

间断性的小于Y分钟的downtime是不被计算在内的。

2. 测量时的系统状态,在什么情况下测量会严重影响测量的结果


测量异常(badly-formed)请求,还是失败(fail)请求还是超时请求(timeout)

测量时的系统负载(是否最大负载)

测量的发起位置,服务器端还是客户端

测量的时间窗口(仅工作日、还是一周7天、是否包括计划内的维护时间段)

3. 如何汇总处理测量的指标?


计算的时间区间是什么:是一个滚动时间窗口,还是简单的按照月份计算

使用平均值还是百分位值,比如:某服务X的ticket处理响应时间SLI的

测量指标:统计所有成功解决请求,从用户创建ticket到问题被解决的时间

怎么测量:用ticket自带的时间戳,统计所有用户创建的ticket

什么情况下的测量:只包括工作时间,不包含法定假日

用于SLI的数据指标:以一周为滑动窗口,95%分位的解决时间

4. 测量指标能否准确描述服务质量?


性能:时效性、是否有偏差

准确性:精度、覆盖率、数据稳定性

完整性:数据丢失、无效数据、异常(outlier)数据

5. 测量指标的可靠度


是否服务提供者和客户都认可

是否可被独立验证,比如三方机构

客户端还是服务器端测量,取样间隔

错误请求是如何计算的

SLO


SLO(服务等级目标)指定了服务所提供功能的一种期望状态。SLO里面应该包含什么呢?所有能够描述服务应该提供什么样功能的信息。

服务提供者用它来指定系统的预期状态;开发人员编写代码来实现;客户依赖于SLO进行商业判断。SLO里没有提到,如果目标达不到会怎么样。

SLO是用SLI来描述的,一般描述为:

比如以下SLO:

每分钟平均qps > 100k/s

99% 访问延迟 < 500ms

99% 每分钟带宽 > 200MB/s

设置SLO时的几个最佳实践:

指定计算的时间窗口

使用一致的时间窗口(XX小时滚动窗口、季度滚动窗口)

要有一个免责条款,比如:95%的时间要能够达到SLO

如果Service是第一次设置SLO,可以遵循以下原则

测量系统当前状态

设置预期(expectations),而不是保证(guarantees)

初期的SLO不适合作为服务质量的强化工具

改进SLO

设置更低的响应时间、更改的吞吐量等

保持一定的安全缓冲

内部用的SLO要高于对外宣称的SLO

不要超额完成

定期的downtime来使SLO不超额完成

设置SLO时的目标依赖于系统的不同状态(conditions),根据不同状态设置不同的SLO:总SLO = service1.SLO1 weight1 service2.SLO2 weight2 …

为什么要有SLO,设置SLO的好处是什么呢?

对于客户而言,是可预期的服务质量,可以简化客户端的系统设计

对于服务提供者而言

可预期的服务质量

更好的取舍成本/收益

更好的风险控制(当资源受限的时候)

故障时更快的反应,采取正确措施

SLO设好了,怎么保证能够达到目标呢?

需要一个控制系统来:

监控/测量SLIs

对比检测到的SLIs值是否达到目标

如果需要,修正目标或者修正系统以满足目标需要

实施目标的修改或者系统的修改

该控制系统需要重复的执行以上动作,以形成一个标准的反馈环路,不断的衡量和改进SLO/服务本身。

我们讨论了目标以及目标是怎么测量的,还讨论了控制机制来达到设置的目标,但是如果因为某些原因,设置的目标达不到该怎么办呢?

也许是因为大量的新增负载;也许是因为底层依赖不能达到标称的SLO而影响上次服务的SLO。这就需要SLA出场了。

SLA 


SLA是一个涉及2方的合约,双方必须都要同意并遵守这个合约。当需要对外提供服务时,SLA是非常重要的一个服务质量信号,需要产品和法务部门的同时介入。

SLA用一个简单的公式来描述就是: SLA = SLO 后果

SLO不能满足的一系列动作,可以是部分不能达到

比如:达到响应时间SLO 未达到可用性SLO

对动作的具体实施

需要一个通用的货币来奖励/惩罚,比如:钱

SLA是一个很好的工具,可以用来帮助合理配置资源。一个有明确SLA的服务最理想的运行状态是:增加额外资源来改进系统所带来的收益小于把该资源投给其他服务所带来的收益。

一个简单的例子就是某服务可用性从99.9%提高到99.99%所需要的资源和带来的收益之比,是决定该服务是否应该提供4个9的重要依据。

案例:

首先,SLI 和 SLO 是 SRE 工程实践里非常核心的概念,但是在同时提到这些概念的时候,经常容易混淆。

说明一下,下图假设所讨论的 SLA 个数为 1,使用了软件工程中 ER 图的表达方式,但也有所变化。

术语清单

SLA = Service Level Agreement = 服务质量/水平协议(对外承诺)

SLO = Service Level Objective = 服务质量/水平目标(对内产品目标)

SLI = Services Level Indicator = 服务质量/水平指标(对内产品服务质量评价指标)

人(用从上到下,从左到右的顺序)

客户 - 每 1 个客户在使用产品服务时,都显性或隐性的基于某 1 个 SLA,SLA 和客户之间是一种 1 对 1 的文档关系,这份协议文档就显性或者隐性的存在于系统中。客户使用 1 种,或者 n 种连接方式访问产品服务的 1 个或者 n 个应用系统。

销售 - SLA 本身是所销售产品服务的一部分,它规定了承诺给客户的产品功用和质量。基于 SLA,客户可以选择用付费或者免费的方式使用产品。1 个/份 SLA 的销售工作可以由 1 到 n 位销售完成。销售和客户都幻想着几乎完美的 SLA,这样代表企业利益的销售,以及产品的客户就都可以达到双赢的局面,皆大欢喜。

产品 - 通过与销售的间接互动,或者直接的客户调研,产品经理能够确定应用系统所应该具有的功能和发展方向。

SRE - SRE 和产品共同制定了每个 SLA 相关应用系统的 SLO,SLO 定量的定义了每 1 个应用系统所应该具备的服务质量,1 个应用系统的 SLO 被该产品服务的 SLO 文档定义,在该文档中 SLO 被映射到 1 个或者 n 个 SLI,每个 SLI 都需要用监控工具持续采集数据,通常它们的数值单位各不相同。所有 SLO 都是用百分比数值形式表达的,例如:99.99% 的成功率,90% 的请求延迟 < 400 毫秒等。SRE 和产品经理/专家还应该共同关注运行应用系统的基础设施层,确保基础设施的可用性和容量足以满足目标数量的用户访问,而且还要考虑和设计底层资源的容灾和跨区多活等复杂场景。

开发/运维 - 重要但暂不做讨论。

事(用从下往上的顺序)

IaaS 云服务 - 也可以是其它类型的可以供应用系统运行的环境。这里存在着 1 到 n 种子服务。它和上层的 n 个应用系统通常是 n 对 n 的关系。

应用系统 - 1 个到 n 个应用系统构成了 1 个产品服务(内含SLA),在和客户的互动中实现着产品服务的业务价值。

文档 - 以网页或者纸张的形式向用户描述了某个应用服务所提供的服务内容和质量信息。向用户提供这个文档并不是强制、显性和必须的。

结束语

结合你的实际工作场景,想象并描绘一下 SLA 、SLO 和 SLI 在你周围的人事物中关系网。在SRE 的工作实践中,定义 SLO,并梳理 SLI,将量化以后的目标和说明文档化,并让各个干系人认同并签署,是一项基础的起步工作。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/91494.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CHI】(三)网络层

网络层负责确定目标节点的NodeID。本章包含以下部分&#xff1a; 系统地址映射&#xff0c;SAM节点ID目标ID确定网络层flow示例 1. System address map 系统中每个Requester(包括RN和HN)必须有一个System Address Map(SAM)来决定一个request的target ID。SAM的范围可能只是简…

基于PSO-KELM的时间序列数据预测(含对比实验)

前段时间有粉丝私信想让我出一期对时间序列预测的文章&#xff0c;所以今天它来了。 时间序列数据&#xff0c;如股指价格&#xff0c;具有波动性、非线性和突变的特点&#xff0c;对于这类数据的预测往往需要可靠强健的预测模型&#xff0c;而传统的机器学习算法如SVM、BP等…

c51单片机串行通信示例代码(单片机--单片机通信)(附带proteus线路图)

//这个发送端代码 #include "reg51.h" #include "myheader.h" #define uchar unsigned char long int sleep_i0; long int main_i0; void main() {uchar sendx[6]{2,0,2,3,8,1};sleep(2000);TMOD0x20;TH10XF4;//根据波特率计算公式这里需要设置为这么多才能…

02 基于51单片机的LED闪烁实验

目录 前言 一、整体目录结构 二、代码展示 三、main.c代码解析 四、下载到单片机中 总结 前言 前面我们已经学会了点亮一个led的实验&#xff0c;今天我们来实现LED闪烁。前面我们讲到想要让LED亮的话&#xff0c;只要给单片机引脚高电平就好了&#xff0c;如果给LED低电平的话…

竞赛项目 深度学习验证码识别 - 机器视觉 python opencv

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x…

Android 面试笔记整理-Binder机制

作者&#xff1a;浪人笔记 面试可能会问到的问题 从IPC的方式问到Binder的优势为什么zygote跟其他服务进程的通讯不使用BinderBinder线程池和Binder机制 等等这些问题都是基于你对Binder的理解还有对其他IPC通讯的理解 IPC方式有多少种 传统的IPC方式有Socket、共享内存、管道…

LeetCode 1631. Path With Minimum Effort【最小瓶颈路;二分+BFS或DFS;计数排序+并查集;最小生成树】1947

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

流量日志分析--实操

[鹤城杯 2021]流量分析 <--第一道流量分析不难,主要就是布尔盲注的流量包分析,直接查看http请求包即可我们可以通过观察看到注入成功的响应长度不同,这里成功的为978字节,失败的994字节.不要问为什么.其实也可以直接判断.978的流量比994的少了非常多 显然就是成功的(因为这里…

LeetCode--HOT100题(26)

目录 题目描述&#xff1a;142. 环形链表 II&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;142. 环形链表 II&#xff08;中等&#xff09; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返…

antd中Switch组件的使用

<Switch> 是 Ant Design 中的一个组件&#xff0c;用于在开关之间切换。checkedChildren 是 <Switch> 组件的一个属性&#xff0c;用于指定在开关打开时显示的文本或 React 元素。 以下是 <Switch> 组件的基本语法&#xff1a; import { Switch } from ant…

【大数据】一些基本概念

一、数据库、数据仓库、数据湖 1.什么是数据库 (Database, DB) 数据库是指长期储存在计算机中的有组织的, 可共享的数据集合 就是存储数据的仓库 数据库有三个特点: 永久存储, 有组织, 可共享 数据库是一种结构化数据存储技术&#xff0c;用于存储和管理有组织的数据。数据库…

在 Linux 中使用 cp 命令

cp 命令是 Linux 中一个重要的命令&#xff0c;你可能经常会用到它。 正如名称所示&#xff0c;cp 代表 复制copy&#xff0c;它被用于 在 Linux 命令行中复制文件和目录。 这是一个相对简单的命令&#xff0c;只有几个选项&#xff0c;但你仍有必要深入了解它。 在展示 cp …

使用GUI Guider工具开发嵌入式GUI应用 (3) - 使用label组件

使用GUI Guider工具开发嵌入式GUI应用 (3) - 使用label组件 文章目录 使用GUI Guider工具开发嵌入式GUI应用 (3) - 使用label组件引言在GUI Guider工程中创建label组件编译MCU工程并下载到开发板 引言 本节讲述在GUI Guider中&#xff0c;应用各种UI的基本元素&#xff0c;并顺…

(十)人工智能应用--深度学习原理与实战--模型的保存与加载使用

目的:将训练好的模型保存为文件,下次使用时直接加载即可,不必重复建模训练。 神经网络模型训练好之后,可以保存为文件以持久存储,这样下次使用时就不重新建模训练,直接加载就可以。TensorfLow提供了灵活的模型保存方案,既可以同时保存网络结构和权重(即保存全模型),也可…

datawhale49期-task02:安装MMSegmentation

task02:安装MMSegmentation 运行环境&#xff1a;window11 ,GPU RTX 4060、CUDA v11.8 1. Pytorch环境 步骤 1. 创建一个 conda 环境&#xff0c;并激活 conda create --name openmmlab python3.8 -y conda activate openmmlabStep 2. 参考 official instructions 安装 PyTor…

详谈数据库InnoDB引擎与MyISAM引擎

目录 1. 简单了解什么是存储引擎? 2. InnoDB 引擎概述 3. MyISAM 引擎概述 4. InnoDB 与 MyISAM 的一些区别 1. 简单了解什么是存储引擎? 相信很多人在听到存储引擎这个名字的时候可能会有些疑惑&#xff0c;听着名字就觉得有些难&#xff0c;导致很多人没有兴趣了解它&a…

【算法题】螺旋矩阵IV (求解n阶折线蛇形矩阵)

一、问题的提出 n阶折线蛇形矩阵的特点是按照图1所示的方式排列元素。n阶蛇形矩阵是指矩阵的大小为nn&#xff0c;其中n为正整数。 题目背景 一个 n 行 n 列的螺旋矩阵可由如图1所示的方法生成&#xff0c;观察图片&#xff0c;找出填数规律。填数规则为从 1 开始填到 nn。 …

HTTP 协议的基本格式和 fiddler 的用法

目录 一. HTTP 协议 1. HTTP协议是什么 2. HTTP协议的基本格式 HTTP请求 首行 GET和POST方法&#xff1a; 其他方法 经典面试题&#xff1a; URL Header(请求报头)部分 空行 ​HTTP响应 状态码总结: 二、Fiddler的用法 1.Fidder的安装 2.Fidder的使用 一. HTTP 协议 1. H…

如何在 iOS 上安装并使用 ONLYOFFICE 文档

借助 iOS 版文档应用&#xff0c;您可在移动端设备上访问存储于 ONLYOFFICE 账户中的文件&#xff0c;查看和编辑现有文本文档、电子表格和演示文稿&#xff0c;创建新文档并对其进行整理&#xff0c;以及连接第三方云存储服务。您可与其他门户网站用户协作编辑文档&#xff0c…

多环境_部署项目

多环境&#xff1a; 指同一套项目代码在不同的阶段需要根据实际情况来调整配置并且部署到不同的机器上。 为什么需要&#xff1f; 1. 每个环境互不影响 2. 区分不同的阶段&#xff1a;开发 / 测试 / 生产 3. 对项目进行优化&#xff1a; 1. 本地日志级别 2. 精简依赖&a…